]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu_snapshot: call qemuSnapshotDeleteUpdateDisks only for external snapshots
authorPavel Hrdina <phrdina@redhat.com>
Wed, 21 Feb 2024 16:45:08 +0000 (17:45 +0100)
committerPavel Hrdina <phrdina@redhat.com>
Tue, 2 Apr 2024 12:14:26 +0000 (14:14 +0200)
Calling this function when deleting internal snapshot isn't required
because with internal snapshots all changes are done within the file
itself so there is no file deletion and no need to update snapshot
metadata.

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

index 0cac0c4146d7131e24457c5479d13b0fc7c0af2a..be089a31dbf82969015b4e400e2458a0de2156ba 100644 (file)
@@ -3537,14 +3537,16 @@ qemuSnapshotDiscardMetadata(virDomainObj *vm,
         if (rep.err < 0)
             ret = -1;
 
-        data.snap = snap;
-        data.vm = vm;
-        data.error = 0;
-        virDomainMomentForEachDescendant(snap,
-                                         qemuSnapshotDeleteUpdateDisks,
-                                         &data);
-        if (data.error < 0)
-            ret = -1;
+        if (virDomainSnapshotIsExternal(snap)) {
+            data.snap = snap;
+            data.vm = vm;
+            data.error = 0;
+            virDomainMomentForEachDescendant(snap,
+                                             qemuSnapshotDeleteUpdateDisks,
+                                             &data);
+            if (data.error < 0)
+                ret = -1;
+        }
 
         virDomainMomentMoveChildren(snap, snap->parent);
     }