--- src/vmware/vmware_conf.c | 3 ++- src/vmware/vmware_conf.h | 1 + src/vmware/vmware_driver.c | 25 +++++++++++++++++-------- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/vmware/vmware_conf.c b/src/vmware/vmware_conf.c index a17b2e1..19be62a 100644 --- a/src/vmware/vmware_conf.c +++ b/src/vmware/vmware_conf.c @@ -45,6 +45,7 @@ vmwareFreeDriver(struct vmware_driver *driver) virMutexDestroy(&driver->lock); virObjectUnref(driver->domains); virObjectUnref(driver->caps); + virObjectUnref(driver->xmlconf); VIR_FREE(driver); } @@ -178,7 +179,7 @@ vmwareLoadDomains(struct vmware_driver *driver) } if (!(vm = virDomainObjListAdd(driver->domains, - driver->caps, + driver->xmlconf, vmdef, 0, NULL))) goto cleanup; diff --git a/src/vmware/vmware_conf.h b/src/vmware/vmware_conf.h index 6ab985e..b3ec966 100644 --- a/src/vmware/vmware_conf.h +++ b/src/vmware/vmware_conf.h @@ -36,6 +36,7 @@ struct vmware_driver { virMutex lock; virCapsPtr caps; + virDomainXMLConfPtr xmlconf; virDomainObjListPtr domains; int version; diff --git a/src/vmware/vmware_driver.c b/src/vmware/vmware_driver.c index b7905fa..6d82532 100644 --- a/src/vmware/vmware_driver.c +++ b/src/vmware/vmware_driver.c @@ -72,6 +72,15 @@ vmwareDataFreeFunc(void *data) VIR_FREE(dom); } +static virDomainXMLConfPtr +vmwareDomainXMLConfigInit(void) +{ + virDomainXMLPrivateDataCallbacks priv = { .alloc = vmwareDataAllocFunc, + .free = vmwareDataFreeFunc }; + + return virDomainXMLConfNew(&priv, NULL); +} + static virDrvOpenStatus vmwareOpen(virConnectPtr conn, virConnectAuthPtr auth ATTRIBUTE_UNUSED, @@ -134,8 +143,8 @@ vmwareOpen(virConnectPtr conn, if (!(driver->caps = vmwareCapsInit())) goto cleanup; - driver->caps->privateDataAllocFunc = vmwareDataAllocFunc; - driver->caps->privateDataFreeFunc = vmwareDataFreeFunc; + if (!(driver->xmlconf = vmwareDomainXMLConfigInit())) + goto cleanup; if (vmwareLoadDomains(driver) < 0) goto cleanup; @@ -315,8 +324,8 @@ vmwareDomainDefineXML(virConnectPtr conn, const char *xml) ctx.formatFileName = vmwareCopyVMXFileName; vmwareDriverLock(driver); - if ((vmdef = virDomainDefParseString(driver->caps, xml, - 1 << VIR_DOMAIN_VIRT_VMWARE, + if ((vmdef = virDomainDefParseString(driver->caps, driver->xmlconf, + xml, 1 << VIR_DOMAIN_VIRT_VMWARE, VIR_DOMAIN_XML_INACTIVE)) == NULL) goto cleanup; @@ -337,7 +346,7 @@ vmwareDomainDefineXML(virConnectPtr conn, const char *xml) /* assign def */ if (!(vm = virDomainObjListAdd(driver->domains, - driver->caps, + driver->xmlconf, vmdef, VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE, NULL))) @@ -586,8 +595,8 @@ vmwareDomainCreateXML(virConnectPtr conn, const char *xml, vmwareDriverLock(driver); - if ((vmdef = virDomainDefParseString(driver->caps, xml, - 1 << VIR_DOMAIN_VIRT_VMWARE, + if ((vmdef = virDomainDefParseString(driver->caps, driver->xmlconf, + xml, 1 << VIR_DOMAIN_VIRT_VMWARE, VIR_DOMAIN_XML_INACTIVE)) == NULL) goto cleanup; @@ -608,7 +617,7 @@ vmwareDomainCreateXML(virConnectPtr conn, const char *xml, /* assign def */ if (!(vm = virDomainObjListAdd(driver->domains, - driver->caps, + driver->xmlconf, vmdef, VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE, NULL))) -- 1.8.1.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list