From: Peter Krempa Date: Wed, 16 Jun 2021 14:56:56 +0000 (+0200) Subject: qemuSnapshotCreateActiveExternal: Don't unlink memory snapshot image if it was existi... X-Git-Tag: v7.5.0-rc1~40 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b396e9dd9ddd9745ac90ab549912de7bc5cc0b17;p=thirdparty%2Flibvirt.git qemuSnapshotCreateActiveExternal: Don't unlink memory snapshot image if it was existing before When writing the memory snapshot into an existing file don't remove it if the snapshot fails later. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- diff --git a/src/qemu/qemu_snapshot.c b/src/qemu/qemu_snapshot.c index 99fc4b836f..4e74ddd7f8 100644 --- a/src/qemu/qemu_snapshot.c +++ b/src/qemu/qemu_snapshot.c @@ -1356,6 +1356,7 @@ qemuSnapshotCreateActiveExternal(virQEMUDriver *driver, virDomainSnapshotDef *snapdef = virDomainSnapshotObjGetDef(snap); bool memory = snapdef->memory == VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL; bool memory_unlink = false; + bool memory_existing = false; bool thaw = false; bool pmsuspended = false; int compressed; @@ -1451,13 +1452,16 @@ qemuSnapshotCreateActiveExternal(virQEMUDriver *driver, goto cleanup; xml = NULL; + memory_existing = virFileExists(snapdef->memorysnapshotfile); + if ((ret = qemuSaveImageCreate(driver, vm, snapdef->memorysnapshotfile, data, compressor, 0, QEMU_ASYNC_JOB_SNAPSHOT)) < 0) goto cleanup; /* the memory image was created, remove it on errors */ - memory_unlink = true; + if (!memory_existing) + memory_unlink = true; /* forbid any further manipulation */ qemuDomainObjSetAsyncJobMask(vm, QEMU_JOB_DEFAULT_MASK);