mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-02 09:55:18 +00:00
qemu_snapshot: move snapshot metadata reparent code
Previously the reparent happened before the actual snapshot deletion. This change moves the code closer to the rest of the code handling snapshot metadata when deletion happens. This makes the metadate deletion happen after the data files are deleted. Following patch will extract it into separate function Signed-off-by: Pavel Hrdina <phrdina@redhat.com> Reviewed-by: Peter Krempa <pkrempa@redhat.com>
This commit is contained in:
parent
9dd19a7a43
commit
deb35939ee
@ -2323,6 +2323,25 @@ qemuSnapshotDiscard(virQEMUDriver *driver,
|
||||
}
|
||||
}
|
||||
|
||||
if (update_parent) {
|
||||
if (snap->nchildren) {
|
||||
virQEMUMomentReparent rep;
|
||||
|
||||
rep.dir = cfg->snapshotDir;
|
||||
rep.parent = snap->parent;
|
||||
rep.vm = vm;
|
||||
rep.err = 0;
|
||||
rep.xmlopt = driver->xmlopt;
|
||||
rep.writeMetadata = qemuDomainSnapshotWriteMetadata;
|
||||
virDomainMomentForEachChild(snap,
|
||||
qemuSnapshotChildrenReparent,
|
||||
&rep);
|
||||
if (rep.err < 0)
|
||||
return -1;
|
||||
virDomainMomentMoveChildren(snap, snap->parent);
|
||||
}
|
||||
}
|
||||
|
||||
snapFile = g_strdup_printf("%s/%s/%s.xml", cfg->snapshotDir, vm->def->name,
|
||||
snap->def->name);
|
||||
|
||||
@ -2382,24 +2401,6 @@ qemuSnapshotDeleteSingle(virDomainObj *vm,
|
||||
{
|
||||
qemuDomainObjPrivate *priv = vm->privateData;
|
||||
virQEMUDriver *driver = priv->driver;
|
||||
g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
|
||||
|
||||
if (snap->nchildren) {
|
||||
virQEMUMomentReparent rep;
|
||||
|
||||
rep.dir = cfg->snapshotDir;
|
||||
rep.parent = snap->parent;
|
||||
rep.vm = vm;
|
||||
rep.err = 0;
|
||||
rep.xmlopt = driver->xmlopt;
|
||||
rep.writeMetadata = qemuDomainSnapshotWriteMetadata;
|
||||
virDomainMomentForEachChild(snap,
|
||||
qemuSnapshotChildrenReparent,
|
||||
&rep);
|
||||
if (rep.err < 0)
|
||||
return -1;
|
||||
virDomainMomentMoveChildren(snap, snap->parent);
|
||||
}
|
||||
|
||||
return qemuSnapshotDiscard(driver, vm, snap, true, metadata_only);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user