[libvirt] [PATCH 1/4] parallels: Fix connecting to parallels driver

Maxim Nestratov mnestratov at parallels.com
Fri Jan 30 19:58:33 UTC 2015


After 55ea7be7, failures of parallelsLoadNetworks and parallelsStorageOpen
started to fail establishing a new connection to parallels driver.
Before this patch we simply ignored such errors.
This patch restores the ability to connect to parallels driver
even if parallelsLoadNetworks fails to get information about
Parallels Bridged networks. This can happen when it is unconfigured
(which is a common case on developers hosts for instance) or configured
incompletely. In any case it is not a severe error and we can ignore it.
Failures of parallelsStorageOpen occured because we incorrectly treated
path to VM' configuration file as a directory. Now initialization of
parallels VM domains home directory is fixed.

Signed-off-by: Maxim Nestratov <mnestratov at parallels.com>
---
 src/parallels/parallels_network.c |    2 +-
 src/parallels/parallels_sdk.c     |    8 ++++++++
 2 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/src/parallels/parallels_network.c b/src/parallels/parallels_network.c
index 3e7087d..033b347 100644
--- a/src/parallels/parallels_network.c
+++ b/src/parallels/parallels_network.c
@@ -304,7 +304,7 @@ static int parallelsLoadNetworks(parallelsConnPtr privconn)
 
         net = parallelsLoadNetwork(privconn, jobj2);
         if (!net)
-            goto cleanup;
+            continue;
 
     }
 
diff --git a/src/parallels/parallels_sdk.c b/src/parallels/parallels_sdk.c
index d0d2ce2..b9d5ddf 100644
--- a/src/parallels/parallels_sdk.c
+++ b/src/parallels/parallels_sdk.c
@@ -1247,6 +1247,14 @@ prlsdkLoadDomain(parallelsConnPtr privconn,
     pret = PrlVmCfg_GetHomePath(sdkdom, pdom->home, &buflen);
     prlsdkCheckRetGoto(pret, error);
 
+    // For VMs pdom->home is actually /directory/config.pvs
+    if(!IS_CT(def)){
+        // Get rid of /config.pvs in path string
+        char *s = strrchr(pdom->home, '/');
+        if (s)
+            *s = '\0';
+    }
+
     if (olddom) {
         /* assign new virDomainDef without any checks */
         /* we can't use virDomainObjAssignDef, because it checks
-- 
1.7.1




More information about the libvir-list mailing list