[libvirt] [PATCH v1 3/4] libxl: implement virConnectCompareCPU
Joao Martins
joao.m.martins at oracle.com
Wed Sep 14 18:05:52 UTC 2016
On 09/12/2016 11:50 AM, Michal Privoznik wrote:
> On 20.07.2016 21:08, Joao Martins wrote:
>> Implement support for "virsh cpu-compare" so that we can calculate
>> common cpu element between a pool of hosts, which had a requirement
>> of providing host cpu description.
>>
>> Signed-off-by: Joao Martins <joao.m.martins at oracle.com>
>> ---
>> src/libxl/libxl_driver.c | 38 ++++++++++++++++++++++++++++++++++++++
>> 1 file changed, 38 insertions(+)
>>
>> diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
>> index f153f69..977e9b5 100644
>> --- a/src/libxl/libxl_driver.c
>> +++ b/src/libxl/libxl_driver.c
>> @@ -5770,6 +5770,43 @@ libxlConnectGetDomainCapabilities(virConnectPtr conn,
>> }
>>
>
> You need to include cpu.h in this patch otherwise cpuCompareXML() which
> is used below is left undefined.
Before submission I always compile and test plus make {syntax-,}check. Wonder
why I haven't noticed this :(
>> +static int
>> +libxlConnectCompareCPU(virConnectPtr conn,
>> + const char *xmlDesc,
>> + unsigned int flags)
>> +{
>> + libxlDriverPrivatePtr driver = conn->privateData;
>> + libxlDriverConfigPtr cfg;
>> + int ret = VIR_CPU_COMPARE_ERROR;
>> + bool failIncompatible;
>> +
>> + virCheckFlags(VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE,
>> + VIR_CPU_COMPARE_ERROR);
>> +
>> + if (virConnectCompareCPUEnsureACL(conn) < 0)
>> + return ret;
>> +
>> + failIncompatible = !!(flags & VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE);
>> +
>> + cfg = libxlDriverConfigGet(driver);
>> +
>> + if (!cfg->caps->host.cpu ||
>> + !cfg->caps->host.cpu->model) {
>> + if (failIncompatible) {
>> + virReportError(VIR_ERR_CPU_INCOMPATIBLE, "%s",
>> + _("cannot get host CPU capabilities"));
>> + } else {
>> + VIR_WARN("cannot get host CPU capabilities");
>> + ret = VIR_CPU_COMPARE_INCOMPATIBLE;
>> + }
>> + } else {
>> + ret = cpuCompareXML(cfg->caps->host.cpu, xmlDesc, failIncompatible);
>> + }
>> +
>> + virObjectUnref(cfg);
>> + return ret;
>> +}
>> +
>> static virHypervisorDriver libxlHypervisorDriver = {
>> .name = LIBXL_DRIVER_NAME,
>> .connectOpen = libxlConnectOpen, /* 0.9.0 */
>> @@ -5872,6 +5909,7 @@ static virHypervisorDriver libxlHypervisorDriver = {
>> .nodeGetSecurityModel = libxlNodeGetSecurityModel, /* 1.2.16 */
>> .domainInterfaceAddresses = libxlDomainInterfaceAddresses, /* 1.3.5 */
>> .connectGetDomainCapabilities = libxlConnectGetDomainCapabilities, /* 2.0.0 */
>> + .connectCompareCPU = libxlConnectCompareCPU, /* 2.1.0 */
>> };
>
> Actually, 2.3.0 now, sorry for such delay.
Thanks again!
Joao
More information about the libvir-list
mailing list