mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 21:55:25 +00:00
qemu: Warn of restore with managed save being risky
Internal snapshots of a non-running domain do not carry any memory state and restoring such a snapshot will not replace existing saved memory state. This allows a scenario, where a user first suspends a domain into managedsave, restores a non-running snapshot and then resumes the domain from managedsave. After that, the guest system will run with its previous memory state atop a different disk state. The most obvious possible fallout from this is extensive file system corruption. Swap content and RAID bitmaps might also be off. This has been discussed[1] and fixed[2] from the end-user perspective for virt-manager. This patch marks the restore operation as risky at the libvirt level, requiring the user to remove the saved memory state first or force the operation. [1] https://www.redhat.com/archives/virt-tools-list/2019-November/msg00011.html [2] https://www.redhat.com/archives/virt-tools-list/2019-December/msg00049.html Signed-off-by: Michael Weiser <michael.weiser@gmx.de> Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
c27d3ec17a
commit
5373f63b30
@ -16636,6 +16636,15 @@ qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
|
||||
_("must respawn qemu to start inactive snapshot"));
|
||||
goto endjob;
|
||||
}
|
||||
if (vm->hasManagedSave &&
|
||||
!(snapdef->state == VIR_DOMAIN_SNAPSHOT_RUNNING ||
|
||||
snapdef->state == VIR_DOMAIN_SNAPSHOT_PAUSED)) {
|
||||
virReportError(VIR_ERR_SNAPSHOT_REVERT_RISKY, "%s",
|
||||
_("snapshot without memory state, removal of "
|
||||
"existing managed saved state strongly "
|
||||
"recommended to avoid corruption"));
|
||||
goto endjob;
|
||||
}
|
||||
}
|
||||
|
||||
if (snap->def->dom) {
|
||||
|
Loading…
Reference in New Issue
Block a user