Move code for loading inforation about pools to a separate
function - parallelsLoadPools.
Signed-off-by: Dmitry Guryanov <dguryanov(a)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 9075dfd..e602299 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;
- 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;
--
1.7.7.6