mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-22 04:25:18 +00:00
qemu_snapshot: revert: always error out if VM XML is missing
The support to revert snapshots was introduced in libvirt 0.8.0 but saving the whole VM XML was implemented later in libvirt 0.9.5. That is more then 10 years ago so we can safely assume that nobody will try reverting to snapshot created by that old libvirt. In the unlikely scenario where someone would actually did it we would simply error out. Signed-off-by: Pavel Hrdina <phrdina@redhat.com> Reviewed-by: Peter Krempa <pkrempa@redhat.com>
This commit is contained in:
parent
23b99623ee
commit
649bd34c28
@ -1907,13 +1907,14 @@ qemuSnapshotRevert(virDomainObj *vm,
|
||||
goto endjob;
|
||||
}
|
||||
|
||||
if (!(flags & VIR_DOMAIN_SNAPSHOT_REVERT_FORCE)) {
|
||||
if (!snap->def->dom) {
|
||||
virReportError(VIR_ERR_SNAPSHOT_REVERT_RISKY,
|
||||
_("snapshot '%s' lacks domain '%s' rollback info"),
|
||||
snap->def->name, vm->def->name);
|
||||
goto endjob;
|
||||
}
|
||||
|
||||
if (!(flags & VIR_DOMAIN_SNAPSHOT_REVERT_FORCE)) {
|
||||
if (virDomainObjIsActive(vm) &&
|
||||
!(snapdef->state == VIR_DOMAIN_SNAPSHOT_RUNNING ||
|
||||
snapdef->state == VIR_DOMAIN_SNAPSHOT_PAUSED) &&
|
||||
@ -1934,7 +1935,6 @@ qemuSnapshotRevert(virDomainObj *vm,
|
||||
}
|
||||
}
|
||||
|
||||
if (snap->def->dom) {
|
||||
config = virDomainDefCopy(snap->def->dom,
|
||||
driver->xmlopt, priv->qemuCaps, true);
|
||||
if (!config)
|
||||
@ -1944,7 +1944,6 @@ qemuSnapshotRevert(virDomainObj *vm,
|
||||
VIR_FREE(config->name);
|
||||
config->name = g_strdup(vm->def->name);
|
||||
}
|
||||
}
|
||||
|
||||
if (snap->def->inactiveDom) {
|
||||
inactiveConfig = virDomainDefCopy(snap->def->inactiveDom,
|
||||
@ -1991,7 +1990,6 @@ qemuSnapshotRevert(virDomainObj *vm,
|
||||
/* Transitions 5, 6, 8, 9 */
|
||||
/* Check for ABI compatibility. We need to do this check against
|
||||
* the migratable XML or it will always fail otherwise */
|
||||
if (config) {
|
||||
bool compatible;
|
||||
|
||||
/* Replace the CPU in config and put the original one in priv
|
||||
@ -2046,7 +2044,6 @@ qemuSnapshotRevert(virDomainObj *vm,
|
||||
virObjectEventStateQueue(driver->domainEventState, event);
|
||||
goto load;
|
||||
}
|
||||
}
|
||||
|
||||
if (virDomainObjGetState(vm, NULL) == VIR_DOMAIN_RUNNING) {
|
||||
/* Transitions 5, 6 */
|
||||
@ -2072,10 +2069,9 @@ qemuSnapshotRevert(virDomainObj *vm,
|
||||
* failed loadvm attempt? */
|
||||
goto endjob;
|
||||
}
|
||||
if (config) {
|
||||
|
||||
virCPUDefFree(priv->origCPU);
|
||||
priv->origCPU = g_steal_pointer(&origCPU);
|
||||
}
|
||||
|
||||
if (cookie && !cookie->slirpHelper)
|
||||
priv->disableSlirp = true;
|
||||
@ -2096,10 +2092,8 @@ qemuSnapshotRevert(virDomainObj *vm,
|
||||
defined = true;
|
||||
}
|
||||
|
||||
if (config) {
|
||||
virDomainObjAssignDef(vm, config, true, NULL);
|
||||
config = NULL;
|
||||
}
|
||||
|
||||
/* No cookie means libvirt which saved the domain was too old to
|
||||
* mess up the CPU definitions.
|
||||
|
Loading…
x
Reference in New Issue
Block a user