[libvirt] [PATCHv2 11/21] fix fallout in src/vmware

Peter Krempa pkrempa at redhat.com
Wed Mar 6 15:37:55 UTC 2013


---
 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




More information about the libvir-list mailing list