]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virStoragePoolObjAddVol: Simplify error path
authorTim Wiederhake <twiederh@redhat.com>
Mon, 11 Apr 2022 11:27:41 +0000 (13:27 +0200)
committerTim Wiederhake <twiederh@redhat.com>
Thu, 14 Apr 2022 17:03:42 +0000 (19:03 +0200)
Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/conf/virstorageobj.c

index 99aee9ffb40b30658ad25aa36ca864b2e039b8cd..1ecf35640c3e9b82eab6e9ba44955312e06b5727 100644 (file)
@@ -636,14 +636,18 @@ virStoragePoolObjAddVol(virStoragePoolObj *obj,
 
     virObjectRWLockWrite(volumes);
 
-    if (!(volobj = virStorageVolObjNew()))
-        goto error;
-
     if (!voldef->key || !voldef->name || !voldef->target.path ||
         g_hash_table_contains(volumes->objsKey, voldef->key) ||
         g_hash_table_contains(volumes->objsName, voldef->name) ||
-        g_hash_table_contains(volumes->objsPath, voldef->target.path))
-        goto error;
+        g_hash_table_contains(volumes->objsPath, voldef->target.path)) {
+        virObjectRWUnlock(volumes);
+        return -1;
+    }
+
+    if (!(volobj = virStorageVolObjNew())) {
+        virObjectRWUnlock(volumes);
+        return -1;
+    }
 
     g_hash_table_insert(volumes->objsKey, g_strdup(voldef->key), volobj);
     virObjectRef(volobj);
@@ -655,14 +659,10 @@ virStoragePoolObjAddVol(virStoragePoolObj *obj,
     virObjectRef(volobj);
 
     volobj->voldef = voldef;
-    virObjectRWUnlock(volumes);
-    virStorageVolObjEndAPI(&volobj);
-    return 0;
 
- error:
     virStorageVolObjEndAPI(&volobj);
     virObjectRWUnlock(volumes);
-    return -1;
+    return 0;
 }