[libvirt] [PATCH] vz: fix active domain listing

Maxim Nestratov mnestratov at virtuozzo.com
Fri Mar 11 09:05:22 UTC 2016


Since commit 9c14a9ab we have broken active domain listing
because reworked prlsdkLoadDomain doesn't set dom->def->id
propely. It just looses it when a new def structure is set.
Now we make prlsdkConvertDomainState function return void
and move calling it after an old dom->def is replaces with
a new one within prlsdkLoadDomain function.

Signed-off-by: Maxim Nestratov <mnestratov at virtuozzo.com>
---
 src/vz/vz_sdk.c | 20 +++++++-------------
 1 file changed, 7 insertions(+), 13 deletions(-)

diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c
index de73c31..f7d769b 100644
--- a/src/vz/vz_sdk.c
+++ b/src/vz/vz_sdk.c
@@ -1051,7 +1051,7 @@ prlsdkAddVNCInfo(PRL_HANDLE sdkdom, virDomainDefPtr def)
     return -1;
 }
 
-static int
+static void
 prlsdkConvertDomainState(VIRTUAL_MACHINE_STATE domainState,
                          PRL_UINT32 envId,
                          virDomainObjPtr dom)
@@ -1121,17 +1121,12 @@ prlsdkConvertDomainState(VIRTUAL_MACHINE_STATE domainState,
         dom->def->id = envId;
         break;
     case VMS_UNKNOWN:
+    default:
         virDomainObjSetState(dom, VIR_DOMAIN_NOSTATE,
                              VIR_DOMAIN_NOSTATE_UNKNOWN);
-        break;
-    default:
-        virReportError(VIR_ERR_INTERNAL_ERROR,
-                       _("Unknown domain state: %X"), domainState);
-        return -1;
+        dom->def->id = -1;
         break;
     }
-
-    return 0;
 }
 
 static int
@@ -1374,9 +1369,6 @@ prlsdkLoadDomain(vzConnPtr privconn, virDomainObjPtr dom)
             goto error;
     }
 
-    if (prlsdkConvertDomainState(domainState, envId, dom) < 0)
-        goto error;
-
     /* assign new virDomainDef without any checks
      * we can't use virDomainObjAssignDef, because it checks
      * for state and domain name */
@@ -1386,6 +1378,8 @@ prlsdkLoadDomain(vzConnPtr privconn, virDomainObjPtr dom)
     VIR_FREE(pdom->home);
     pdom->home = home;
 
+    prlsdkConvertDomainState(domainState, envId, dom);
+
     if (!pdom->sdkdom) {
         PrlHandle_AddRef(sdkdom);
         pdom->sdkdom = sdkdom;
@@ -1532,8 +1526,8 @@ prlsdkHandleVmStateEvent(vzConnPtr privconn,
     prlsdkCheckRetGoto(pret, cleanup);
 
     pdom = dom->privateData;
-    if (prlsdkConvertDomainState(domainState, pdom->id, dom) < 0)
-        goto cleanup;
+
+    prlsdkConvertDomainState(domainState, pdom->id, dom);
 
     prlsdkNewStateToEvent(domainState,
                           &lvEventType,
-- 
2.4.3




More information about the libvir-list mailing list