Create a couple of helpers that will perform the same call sequence.
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
src/storage/storage_driver.c | 144 ++++++++++++++++++-------------------------
1 file changed, 59 insertions(+), 85 deletions(-)
diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c
index 6b8bbb5..8b55acc 100644
--- a/src/storage/storage_driver.c
+++ b/src/storage/storage_driver.c
@@ -387,6 +387,56 @@ storageStateCleanup(void)
}
+static virStoragePoolObjPtr
+storagePoolObjFindByUUID(const unsigned char *uuid,
+ const char *name)
+{
+ virStoragePoolObjPtr pool;
+ char uuidstr[VIR_UUID_STRING_BUFLEN];
+
+ if (!(pool = virStoragePoolObjFindByUUID(&driver->pools, uuid))) {
+ virUUIDFormat(uuid, uuidstr);
+ if (name)
+ virReportError(VIR_ERR_NO_STORAGE_POOL,
+ _("no storage pool with matching uuid '%s'
(%s)"),
+ uuidstr, name);
+ else
+ virReportError(VIR_ERR_NO_STORAGE_POOL,
+ _("no storage pool with matching uuid
'%s'"),
+ uuidstr);
+ }
+
+ return pool;
+}
+
+
+static virStoragePoolObjPtr
+virStoragePoolObjFromStoragePool(virStoragePoolPtr pool)
+{
+ virStoragePoolObjPtr ret;
+
+ storageDriverLock();
+ ret = storagePoolObjFindByUUID(pool->uuid, pool->name);
+ storageDriverUnlock();
+
+ return ret;
+}
+
+
+static virStoragePoolObjPtr
+storagePoolObjFindByName(const char *name)
+{
+ virStoragePoolObjPtr pool;
+
+ storageDriverLock();
+ if (!(pool = virStoragePoolObjFindByName(&driver->pools, name)))
+ virReportError(VIR_ERR_NO_STORAGE_POOL,
+ _("no storage pool with matching name '%s'"),
name);
+ storageDriverUnlock();
+
+ return pool;
+}
+
static virStoragePoolPtr
storagePoolLookupByUUID(virConnectPtr conn,
@@ -396,16 +446,10 @@ storagePoolLookupByUUID(virConnectPtr conn,
virStoragePoolPtr ret = NULL;
storageDriverLock();
- pool = virStoragePoolObjFindByUUID(&driver->pools, uuid);
+ pool = storagePoolObjFindByUUID(uuid, NULL);
storageDriverUnlock();
-
- if (!pool) {
- char uuidstr[VIR_UUID_STRING_BUFLEN];
- virUUIDFormat(uuid, uuidstr);
- virReportError(VIR_ERR_NO_STORAGE_POOL,
- _("no storage pool with matching uuid '%s'"),
uuidstr);
+ if (!pool)
return NULL;
- }
if (virStoragePoolLookupByUUIDEnsureACL(conn, pool->def) < 0)
goto cleanup;
@@ -425,15 +469,8 @@ storagePoolLookupByName(virConnectPtr conn,
virStoragePoolObjPtr pool;
virStoragePoolPtr ret = NULL;
- storageDriverLock();
- pool = virStoragePoolObjFindByName(&driver->pools, name);
- storageDriverUnlock();
-
- if (!pool) {
- virReportError(VIR_ERR_NO_STORAGE_POOL,
- _("no storage pool with matching name '%s'"),
name);
+ if (!(pool = storagePoolObjFindByName(name)))
return NULL;
- }
if (virStoragePoolLookupByNameEnsureACL(conn, pool->def) < 0)
goto cleanup;
@@ -452,16 +489,8 @@ storagePoolLookupByVolume(virStorageVolPtr vol)
virStoragePoolObjPtr pool;
virStoragePoolPtr ret = NULL;
- storageDriverLock();
- pool = virStoragePoolObjFindByName(&driver->pools, vol->pool);
- storageDriverUnlock();
-
- if (!pool) {
- virReportError(VIR_ERR_NO_STORAGE_POOL,
- _("no storage pool with matching name '%s'"),
- vol->pool);
+ if (!(pool = storagePoolObjFindByName(vol->pool)))
return NULL;
- }
if (virStoragePoolLookupByVolumeEnsureACL(vol->conn, pool->def) < 0)
goto cleanup;
@@ -588,25 +617,6 @@ storageConnectFindStoragePoolSources(virConnectPtr conn,
}
-static virStoragePoolObjPtr
-virStoragePoolObjFromStoragePool(virStoragePoolPtr pool)
-{
- char uuidstr[VIR_UUID_STRING_BUFLEN];
- virStoragePoolObjPtr ret;
-
- storageDriverLock();
- if (!(ret = virStoragePoolObjFindByUUID(&driver->pools, pool->uuid))) {
- virUUIDFormat(pool->uuid, uuidstr);
- virReportError(VIR_ERR_NO_STORAGE_POOL,
- _("no storage pool with matching uuid '%s'
(%s)"),
- uuidstr, pool->name);
- }
- storageDriverUnlock();
-
- return ret;
-}
-
-
static int storagePoolIsActive(virStoragePoolPtr pool)
{
virStoragePoolObjPtr obj;
@@ -813,14 +823,8 @@ storagePoolUndefine(virStoragePoolPtr obj)
int ret = -1;
storageDriverLock();
- if (!(pool = virStoragePoolObjFindByUUID(&driver->pools, obj->uuid))) {
- char uuidstr[VIR_UUID_STRING_BUFLEN];
- virUUIDFormat(obj->uuid, uuidstr);
- virReportError(VIR_ERR_NO_STORAGE_POOL,
- _("no storage pool with matching uuid '%s'
(%s)"),
- uuidstr, obj->name);
+ if (!(pool = storagePoolObjFindByUUID(obj->uuid, obj->name)))
goto cleanup;
- }
if (virStoragePoolUndefineEnsureACL(obj->conn, pool->def) < 0)
goto cleanup;
@@ -999,14 +1003,8 @@ storagePoolDestroy(virStoragePoolPtr obj)
int ret = -1;
storageDriverLock();
- if (!(pool = virStoragePoolObjFindByUUID(&driver->pools, obj->uuid))) {
- char uuidstr[VIR_UUID_STRING_BUFLEN];
- virUUIDFormat(obj->uuid, uuidstr);
- virReportError(VIR_ERR_NO_STORAGE_POOL,
- _("no storage pool with matching uuid '%s'
(%s)"),
- uuidstr, obj->name);
+ if (!(pool = storagePoolObjFindByUUID(obj->uuid, obj->name)))
goto cleanup;
- }
if (virStoragePoolDestroyEnsureACL(obj->conn, pool->def) < 0)
goto cleanup;
@@ -1133,14 +1131,8 @@ storagePoolRefresh(virStoragePoolPtr obj,
virCheckFlags(0, -1);
storageDriverLock();
- if (!(pool = virStoragePoolObjFindByUUID(&driver->pools, obj->uuid))) {
- char uuidstr[VIR_UUID_STRING_BUFLEN];
- virUUIDFormat(obj->uuid, uuidstr);
- virReportError(VIR_ERR_NO_STORAGE_POOL,
- _("no storage pool with matching uuid '%s'
(%s)"),
- uuidstr, obj->name);
+ if (!(pool = storagePoolObjFindByUUID(obj->uuid, obj->name)))
goto cleanup;
- }
if (virStoragePoolRefreshEnsureACL(obj->conn, pool->def) < 0)
goto cleanup;
@@ -1283,16 +1275,8 @@ storagePoolSetAutostart(virStoragePoolPtr obj,
int ret = -1;
storageDriverLock();
- pool = virStoragePoolObjFindByUUID(&driver->pools, obj->uuid);
-
- if (!pool) {
- char uuidstr[VIR_UUID_STRING_BUFLEN];
- virUUIDFormat(obj->uuid, uuidstr);
- virReportError(VIR_ERR_NO_STORAGE_POOL,
- _("no storage pool with matching uuid '%s'
(%s)"),
- uuidstr, obj->name);
+ if (!(pool = storagePoolObjFindByUUID(obj->uuid, obj->name)))
goto cleanup;
- }
if (virStoragePoolSetAutostartEnsureACL(obj->conn, pool->def) < 0)
goto cleanup;
@@ -1713,18 +1697,8 @@ virStorageVolDefFromVol(virStorageVolPtr obj,
{
virStorageVolDefPtr vol = NULL;
- *pool = NULL;
-
- storageDriverLock();
- *pool = virStoragePoolObjFindByName(&driver->pools, obj->pool);
- storageDriverUnlock();
-
- if (!*pool) {
- virReportError(VIR_ERR_NO_STORAGE_POOL,
- _("no storage pool with matching name '%s'"),
- obj->pool);
+ if (!(*pool = storagePoolObjFindByName(obj->pool)))
return NULL;
- }
if (!virStoragePoolObjIsActive(*pool)) {
virReportError(VIR_ERR_OPERATION_INVALID,
--
2.9.3