
On 07.07.2016 15:41, Peter Krempa wrote:
Allow to store driver specific data on a per-vcpu basis.
Move of the virDomainDef*Vcpus* functions was necessary as virDomainXMLOptionPtr was declared below this block and I didn't want to split the function headers. --- src/conf/domain_conf.c | 28 +++++++++++++++++++++------- src/conf/domain_conf.h | 22 ++++++++++++++-------- src/hyperv/hyperv_driver.c | 3 ++- src/libxl/libxl_driver.c | 4 ++-- src/lxc/lxc_native.c | 2 +- src/openvz/openvz_conf.c | 2 +- src/openvz/openvz_driver.c | 16 ++++++++++------ src/phyp/phyp_driver.c | 2 +- src/qemu/qemu_driver.c | 2 +- src/qemu/qemu_parse_command.c | 9 +++++---- src/test/test_driver.c | 4 +++- src/vbox/vbox_common.c | 4 ++-- src/vmx/vmx.c | 2 +- src/xen/xm_internal.c | 2 +- src/xenapi/xenapi_driver.c | 2 +- src/xenconfig/xen_common.c | 13 ++++++++----- src/xenconfig/xen_common.h | 3 ++- src/xenconfig/xen_sxpr.c | 2 +- src/xenconfig/xen_xl.c | 3 ++- src/xenconfig/xen_xm.c | 3 ++- 20 files changed, 81 insertions(+), 47 deletions(-)
You forgot to update Virtuozzo (vz) driver.
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index c2d7259..e660f8e 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -1307,12 +1307,23 @@ void virDomainLeaseDefFree(virDomainLeaseDefPtr def)
static virDomainVcpuDefPtr -virDomainVcpuDefNew(void) +virDomainVcpuDefNew(virDomainXMLOptionPtr xmlopt) { + virObjectPtr priv = NULL; virDomainVcpuDefPtr ret;
- ignore_value(VIR_ALLOC(ret)); + if (xmlopt && xmlopt->privateData.vcpuNew && + !(priv = xmlopt->privateData.vcpuNew())) + goto cleanup; + + if (VIR_ALLOC(ret) < 0) + goto cleanup; + + ret->privateData = priv; + priv = NULL;
+ cleanup: + virObjectUnref(priv); return ret;
Funny, my compiler fails to see that @ret might be used uninitialized here.. All that's needed is just vcpuNew() function to fail. Initialize the @ret properly please.
}
ACK if you squash this in: diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c index 9d0bc0d..7871230 100644 --- a/src/vz/vz_sdk.c +++ b/src/vz/vz_sdk.c @@ -1309,7 +1309,8 @@ prlsdkConvertDomainState(VIRTUAL_MACHINE_STATE domainState, static int prlsdkConvertCpuInfo(PRL_HANDLE sdkdom, - virDomainDefPtr def) + virDomainDefPtr def, + virDomainXMLOptionPtr xmlopt) { char *buf; int hostcpus; @@ -1327,7 +1328,7 @@ prlsdkConvertCpuInfo(PRL_HANDLE sdkdom, if (cpuCount > hostcpus) cpuCount = hostcpus; - if (virDomainDefSetVcpusMax(def, cpuCount) < 0) + if (virDomainDefSetVcpusMax(def, cpuCount, xmlopt) < 0) goto cleanup; if (virDomainDefSetVcpus(def, cpuCount) < 0) @@ -1706,7 +1707,7 @@ prlsdkLoadDomain(vzDriverPtr driver, virDomainObjPtr dom) convert to Kbytes */ def->mem.cur_balloon = ram << 10; - if (prlsdkConvertCpuInfo(sdkdom, def) < 0) + if (prlsdkConvertCpuInfo(sdkdom, def, driver->xmlopt) < 0) goto error; if (prlsdkConvertCpuMode(sdkdom, def) < 0) Michal