]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
parallels: split parallelsStorageOpen function
authorDmitry Guryanov <dguryanov@parallels.com>
Tue, 4 Dec 2012 13:43:03 +0000 (17:43 +0400)
committerDaniel Veillard <veillard@redhat.com>
Tue, 11 Dec 2012 08:26:31 +0000 (16:26 +0800)
Move code for loading inforation about pools to a separate
function - parallelsLoadPools.

Signed-off-by: Dmitry Guryanov <dguryanov@parallels.com>
src/parallels/parallels_storage.c

index 9075dfd5f108d546d40b03826d010e537602822a..e602299ce84a44f576bb1ed9beb3c1a5d378ac73 100644 (file)
@@ -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;
-    bool privileged = (geteuid() == 0);
     parallelsConnPtr privconn = conn->privateData;
+    virStorageDriverStatePtr storageState = conn->storagePrivateData;
+    bool 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;