summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPavel Hrdina <phrdina@redhat.com>2022-03-23 11:11:09 +0100
committerPavel Hrdina <phrdina@redhat.com>2023-01-09 13:32:50 +0100
commit06c2382ab9b4182e69b21c20c8ddb98773299d23 (patch)
tree0b7ef9bfa852938960066d005bedb804ba321bcb /src
parenta784d4076ac68cb3f0837c6d1ff589d94eb24d3d (diff)
downloadlibvirt-06c2382ab9b4182e69b21c20c8ddb98773299d23.tar.gz
qemu_snapshot: refactor qemuSnapshotDelete
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>
Diffstat (limited to 'src')
-rw-r--r--src/qemu/qemu_snapshot.c37
1 files changed, 20 insertions, 17 deletions
diff --git a/src/qemu/qemu_snapshot.c b/src/qemu/qemu_snapshot.c
index 8b5bcd9770..4cc74fb092 100644
--- a/src/qemu/qemu_snapshot.c
+++ b/src/qemu/qemu_snapshot.c
@@ -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);
}