]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
vz: use domain list infrastructure to deal with private domain
authorNikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
Tue, 14 Jun 2016 08:45:56 +0000 (11:45 +0300)
committerMaxim Nestratov <mnestratov@virtuozzo.com>
Tue, 19 Jul 2016 02:31:17 +0000 (05:31 +0300)
Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
src/vz/vz_driver.c
src/vz/vz_sdk.c
src/vz/vz_sdk.h
src/vz/vz_utils.c
src/vz/vz_utils.h

index 6d48dc4deca820234d8f91e8a70473950fbe72b9..1bb99f069fc4052ed62465eadfcfd28408835eee 100644 (file)
@@ -292,6 +292,10 @@ vzDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
     return 0;
 }
 
+static virDomainXMLPrivateDataCallbacks vzDomainXMLPrivateDataCallbacksPtr = {
+    .alloc = vzDomObjAlloc,
+    .free = vzDomObjFree,
+};
 
 static virDomainDefParserConfig vzDomainDefParserConfig = {
     .macPrefix = {0x42, 0x1C, 0x00},
@@ -314,7 +318,8 @@ vzDriverObjNew(void)
 
     if (!(driver->caps = vzBuildCapabilities()) ||
         !(driver->xmlopt = virDomainXMLOptionNew(&vzDomainDefParserConfig,
-                                                   NULL, NULL)) ||
+                                                 &vzDomainXMLPrivateDataCallbacksPtr,
+                                                 NULL)) ||
         !(driver->domains = virDomainObjListNew()) ||
         !(driver->domainEventState = virObjectEventStateNew()) ||
         (vzInitVersion(driver) < 0) ||
index cdda8eb28191ddf11dd4a452a1037af9967cb99a..9495a36968a4cf489af07565d2514b8523f7a670 100644 (file)
@@ -476,19 +476,6 @@ prlsdkGetDomainState(PRL_HANDLE sdkdom, VIRTUAL_MACHINE_STATE_PTR vmState)
     return ret;
 }
 
-void
-prlsdkDomObjFreePrivate(void *p)
-{
-    vzDomObjPtr pdom = p;
-
-    if (!pdom)
-        return;
-
-    PrlHandle_Free(pdom->sdkdom);
-    PrlHandle_Free(pdom->stats);
-    VIR_FREE(p);
-};
-
 static int
 prlsdkAddDomainVideoInfoCt(virDomainDefPtr def)
 {
index 2d75f9590cd9722ca2c6f4a7ce7ca32d195e68dd..a7dec565ffc5612ea42606380d6e73a425d43c5b 100644 (file)
@@ -76,8 +76,6 @@ int
 prlsdkGetVcpuStats(PRL_HANDLE sdkstas, int idx, unsigned long long *time);
 int
 prlsdkGetMemoryStats(PRL_HANDLE sdkstas, virDomainMemoryStatPtr stats, unsigned int nr_stats);
-void
-prlsdkDomObjFreePrivate(void *p);
 /* memsize is in MiB */
 int prlsdkSetMemsize(virDomainObjPtr dom, unsigned int memsize);
 int
index 43c531ba5ddd48517a33d7b2357c897e29d3bd79..114738e6da1ea562972c53f18515b61694392440 100644 (file)
@@ -164,15 +164,10 @@ vzNewDomain(vzDriverPtr driver, const char *name, const unsigned char *uuid)
 {
     virDomainDefPtr def = NULL;
     virDomainObjPtr dom = NULL;
-    vzDomObjPtr pdom = NULL;
 
     if (!(def = virDomainDefNewFull(name, uuid, -1)))
         goto error;
 
-    if (VIR_ALLOC(pdom) < 0)
-        goto error;
-
-    pdom->stats = PRL_INVALID_HANDLE;
     def->virtType = VIR_DOMAIN_VIRT_VZ;
 
     if (!(dom = virDomainObjListAdd(driver->domains, def,
@@ -180,14 +175,11 @@ vzNewDomain(vzDriverPtr driver, const char *name, const unsigned char *uuid)
                                     0, NULL)))
         goto error;
 
-    dom->privateData = pdom;
-    dom->privateDataFreeFunc = prlsdkDomObjFreePrivate;
     dom->persistent = 1;
     return dom;
 
  error:
     virDomainDefFree(def);
-    VIR_FREE(pdom);
     return NULL;
 }
 
@@ -610,3 +602,29 @@ int vzCheckUnsupportedGraphics(virDomainGraphicsDefPtr gr)
 
     return 0;
 }
+
+void*
+vzDomObjAlloc(void)
+{
+    vzDomObjPtr pdom = NULL;
+
+    if (VIR_ALLOC(pdom) < 0)
+        return NULL;
+
+    pdom->stats = PRL_INVALID_HANDLE;
+
+    return pdom;
+}
+
+void
+vzDomObjFree(void* p)
+{
+    vzDomObjPtr pdom = p;
+
+    if (!pdom)
+        return;
+
+    PrlHandle_Free(pdom->sdkdom);
+    PrlHandle_Free(pdom->stats);
+    VIR_FREE(pdom);
+};
index ba96765aa04a5d466cfcfc2dba84923de5baf642..a9a8176952e3f8beef6753e11f764e46c66dd354 100644 (file)
@@ -102,6 +102,9 @@ struct vzDomObj {
 
 typedef struct vzDomObj *vzDomObjPtr;
 
+void* vzDomObjAlloc(void);
+void vzDomObjFree(void *p);
+
 virDomainObjPtr vzDomObjFromDomain(virDomainPtr domain);
 virDomainObjPtr vzDomObjFromDomainRef(virDomainPtr domain);