]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu_snapshot: refactor qemuSnapshotDelete
authorPavel Hrdina <phrdina@redhat.com>
Wed, 23 Mar 2022 10:11:09 +0000 (11:11 +0100)
committerPavel Hrdina <phrdina@redhat.com>
Mon, 9 Jan 2023 12:32:50 +0000 (13:32 +0100)
Move code around to make it clear what is called when deleting single
snapshot or children snapshots.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
src/qemu/qemu_snapshot.c

index 8b5bcd977069debbd9183d543dbee8b4d79dd729..4cc74fb0921ffb62389dc5b33a7e02eec66160bd 100644 (file)
@@ -2350,25 +2350,28 @@ qemuSnapshotDelete(virDomainObj *vm,
                 }
             }
         }
-    } else if (snap->nchildren) {
-        rep.dir = cfg->snapshotDir;
-        rep.parent = snap->parent;
-        rep.vm = vm;
-        rep.err = 0;
-        rep.xmlopt = driver->xmlopt;
-        rep.writeMetadata = qemuDomainSnapshotWriteMetadata;
-        virDomainMomentForEachChild(snap,
-                                    qemuSnapshotChildrenReparent,
-                                    &rep);
-        if (rep.err < 0)
-            goto endjob;
-        virDomainMomentMoveChildren(snap, snap->parent);
-    }
 
-    if (flags & VIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN_ONLY) {
-        virDomainMomentDropChildren(snap);
-        ret = 0;
+        if (flags & VIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN_ONLY) {
+            virDomainMomentDropChildren(snap);
+            ret = 0;
+        } else {
+            ret = qemuDomainSnapshotDiscard(driver, vm, snap, true, metadata_only);
+        }
     } else {
+        if (snap->nchildren) {
+            rep.dir = cfg->snapshotDir;
+            rep.parent = snap->parent;
+            rep.vm = vm;
+            rep.err = 0;
+            rep.xmlopt = driver->xmlopt;
+            rep.writeMetadata = qemuDomainSnapshotWriteMetadata;
+            virDomainMomentForEachChild(snap,
+                                        qemuSnapshotChildrenReparent,
+                                        &rep);
+            if (rep.err < 0)
+                goto endjob;
+            virDomainMomentMoveChildren(snap, snap->parent);
+        }
         ret = qemuDomainSnapshotDiscard(driver, vm, snap, true, metadata_only);
     }