]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu_snapshot: create: refactor endjob in qemuSnapshotCreateXML
authorPavel Hrdina <phrdina@redhat.com>
Wed, 29 Sep 2021 17:18:57 +0000 (19:18 +0200)
committerPavel Hrdina <phrdina@redhat.com>
Wed, 1 Dec 2021 11:33:38 +0000 (12:33 +0100)
The logic of saving metadata doesn't have to be in endjob section as
it will only happen if we have successfully created snapshot.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_snapshot.c

index 980c6e855ea30d0a008779556642f1c1e6f58ce6..32eb2eeb8953b77ff65ebd01390ed79e83c335f2 100644 (file)
@@ -1814,10 +1814,10 @@ qemuSnapshotCreateXML(virDomainPtr domain,
      * do; we've successfully taken the snapshot, and we are now running
      * on it, so we have to go forward the best we can
      */
-    snapshot = virGetDomainSnapshot(domain, snap->def->name);
+    if (!(snapshot = virGetDomainSnapshot(domain, snap->def->name)))
+        goto endjob;
 
- endjob:
-    if (snapshot && !(flags & VIR_DOMAIN_SNAPSHOT_CREATE_NO_METADATA)) {
+    if (!(flags & VIR_DOMAIN_SNAPSHOT_CREATE_NO_METADATA)) {
         if (!redefine || (flags & VIR_DOMAIN_SNAPSHOT_CREATE_CURRENT))
             qemuSnapshotSetCurrent(vm, snap);
 
@@ -1831,14 +1831,18 @@ qemuSnapshotCreateXML(virDomainPtr domain,
             virReportError(VIR_ERR_INTERNAL_ERROR,
                            _("unable to save metadata for snapshot %s"),
                            snap->def->name);
-            virDomainSnapshotObjListRemove(vm->snapshots, snap);
-        } else {
-            virDomainSnapshotLinkParent(vm->snapshots, snap);
+            goto endjob;
         }
-    } else if (snap) {
-        virDomainSnapshotObjListRemove(vm->snapshots, snap);
+
+        virDomainSnapshotLinkParent(vm->snapshots, snap);
+        snap = NULL;
     }
 
+ endjob:
+
+    if (snap)
+        virDomainSnapshotObjListRemove(vm->snapshots, snap);
+
     qemuDomainObjEndAsyncJob(driver, vm);
 
     return snapshot;