[libvirt] [PATCH v3 03/13] parallels: split parallelsStorageOpen function

Dmitry Guryanov dguryanov at parallels.com
Wed Nov 28 09:30:25 UTC 2012


Move code for loading inforation about pools to a separate
function - parallelsLoadPools.

Signed-off-by: Dmitry Guryanov <dguryanov at parallels.com>
---
 src/parallels/parallels_storage.c |   66 ++++++++++++++++++++++---------------
 1 files changed, 39 insertions(+), 27 deletions(-)

diff --git a/src/parallels/parallels_storage.c b/src/parallels/parallels_storage.c
index 8d4e2c6..6268a5b 100644
--- a/src/parallels/parallels_storage.c
+++ b/src/parallels/parallels_storage.c
@@ -114,33 +114,14 @@ cleanup:
 
 }
 
-static virDrvOpenStatus
-parallelsStorageOpen(virConnectPtr conn,
-                     virConnectAuthPtr auth ATTRIBUTE_UNUSED,
-                     unsigned int flags)
+static int parallelsLoadPools(virConnectPtr conn)
 {
-    char *base = NULL;
-    virStorageDriverStatePtr storageState;
-    int privileged = (geteuid() == 0);
     parallelsConnPtr privconn = conn->privateData;
+    virStorageDriverStatePtr storageState = conn->storagePrivateData;
+    int privileged = (geteuid() == 0);
+    char *base = NULL;
     size_t i;
 
-    virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
-
-    if (STRNEQ(conn->driver->name, "Parallels"))
-        return VIR_DRV_OPEN_DECLINED;
-
-    if (VIR_ALLOC(storageState) < 0) {
-        virReportOOMError();
-        return VIR_DRV_OPEN_ERROR;
-    }
-
-    if (virMutexInit(&storageState->lock) < 0) {
-        VIR_FREE(storageState);
-        return VIR_DRV_OPEN_ERROR;
-    }
-    parallelsStorageLock(storageState);
-
     if (privileged) {
         if ((base = strdup(SYSCONFDIR "/libvirt")) == NULL)
             goto out_of_memory;
@@ -194,16 +175,47 @@ parallelsStorageOpen(virConnectPtr conn,
         virStoragePoolObjUnlock(privconn->pools.objs[i]);
     }
 
-    parallelsStorageUnlock(storageState);
+    return 0;
+
+out_of_memory:
+    virReportOOMError();
+error:
+    VIR_FREE(base);
+    return -1;
+}
+
+static virDrvOpenStatus
+parallelsStorageOpen(virConnectPtr conn,
+                     virConnectAuthPtr auth ATTRIBUTE_UNUSED,
+                     unsigned int flags)
+{
+    virStorageDriverStatePtr storageState;
+    virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
+
+    if (STRNEQ(conn->driver->name, "Parallels"))
+        return VIR_DRV_OPEN_DECLINED;
+
+    if (VIR_ALLOC(storageState) < 0) {
+        virReportOOMError();
+        return VIR_DRV_OPEN_ERROR;
+    }
+
+    if (virMutexInit(&storageState->lock) < 0) {
+        VIR_FREE(storageState);
+        return VIR_DRV_OPEN_ERROR;
+    }
 
     conn->storagePrivateData = storageState;
+    parallelsStorageLock(storageState);
+
+    if (parallelsLoadPools(conn))
+        goto error;
+
+    parallelsStorageUnlock(storageState);
 
     return VIR_DRV_OPEN_SUCCESS;
 
-out_of_memory:
-    virReportOOMError();
 error:
-    VIR_FREE(base);
     parallelsStorageUnlock(storageState);
     parallelsStorageClose(conn);
     return -1;
-- 
1.7.7.6




More information about the libvir-list mailing list