mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-04 21:47:16 +03:00
snapshot: detect when qemu lacks disk-snapshot support
Noticed when testing new libvirt against old qemu that lacked the snapshot_blkdev HMP command. Libvirt was mistakenly treating the command as successful, and re-writing the domain XML to use the just-created 0-byte file, rendering the domain broken on restart. * src/qemu/qemu_monitor_text.c (qemuMonitorTextDiskSnapshot): Notice another possible error message. * src/qemu/qemu_driver.c (qemuDomainSnapshotCreateSingleDiskActive): Don't keep 0-byte file on failure.
This commit is contained in:
parent
94f776e716
commit
dad15a2e02
@ -9027,7 +9027,6 @@ qemuDomainSnapshotCreateSingleDiskActive(struct qemud_driver *driver,
|
||||
VIR_WARN("Unable to release lock on %s", source);
|
||||
goto cleanup;
|
||||
}
|
||||
need_unlink = false;
|
||||
|
||||
disk->src = origsrc;
|
||||
origsrc = NULL;
|
||||
@ -9041,6 +9040,7 @@ qemuDomainSnapshotCreateSingleDiskActive(struct qemud_driver *driver,
|
||||
goto cleanup;
|
||||
|
||||
/* Update vm in place to match changes. */
|
||||
need_unlink = false;
|
||||
VIR_FREE(disk->src);
|
||||
disk->src = source;
|
||||
source = NULL;
|
||||
|
@ -3064,7 +3064,8 @@ qemuMonitorTextDiskSnapshot(qemuMonitorPtr mon, const char *device,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (strstr(reply, "error while creating qcow2") != NULL) {
|
||||
if (strstr(reply, "error while creating qcow2") != NULL ||
|
||||
strstr(reply, "unknown command:") != NULL) {
|
||||
qemuReportError(VIR_ERR_OPERATION_FAILED,
|
||||
_("Failed to take snapshot: %s"), reply);
|
||||
goto cleanup;
|
||||
|
Loading…
x
Reference in New Issue
Block a user