From: Pavel Hrdina Date: Wed, 29 Sep 2021 17:18:57 +0000 (+0200) Subject: qemu_snapshot: create: refactor endjob in qemuSnapshotCreateXML X-Git-Tag: v8.0.0-rc1~458 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=29a08404757848fe5f4927227f42034ffb6a322e;p=thirdparty%2Flibvirt.git qemu_snapshot: create: refactor endjob in qemuSnapshotCreateXML 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 Reviewed-by: Ján Tomko --- diff --git a/src/qemu/qemu_snapshot.c b/src/qemu/qemu_snapshot.c index 980c6e855e..32eb2eeb89 100644 --- a/src/qemu/qemu_snapshot.c +++ b/src/qemu/qemu_snapshot.c @@ -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;