[libvirt] [PATCHv2 07/26] snapshot: track current snapshot across restarts
Eric Blake
eblake at redhat.com
Tue Aug 16 21:07:22 UTC 2011
On 08/15/2011 05:33 PM, Eric Blake wrote:
> Audit all changes to the qemu vm->current_snapshot, and make them
> update the saved xml file for both the previous and the new
> snapshot, so that there is always at most one snapshot with
> <active>1</active> in the xml, and that snapshot is used as the
> current snapshot even across libvirtd restarts.
>
> if (snap == vm->current_snapshot) {
> if (snap->def->parent) {
> parentsnap = virDomainSnapshotFindByName(&vm->snapshots,
> snap->def->parent);
> if (!parentsnap) {
> - qemuReportError(VIR_ERR_NO_DOMAIN_SNAPSHOT,
> - _("no domain snapshot parent with matching name '%s'"),
> - snap->def->parent);
> - goto cleanup;
> + VIR_WARN("missing parent snapshot matching name '%s'",
> + snap->def->parent);
> + } else {
> + parentsnap->def->current = true;
> + if (qemuDomainSnapshotWriteMetadata(vm, snap,
> + driver->snapshotDir)< 0) {
It helps to write to the correct file. Squash this in:
diff --git i/src/qemu/qemu_driver.c w/src/qemu/qemu_driver.c
index 76c5549..f3b5fd8 100644
--- i/src/qemu/qemu_driver.c
+++ w/src/qemu/qemu_driver.c
@@ -8995,7 +8995,7 @@ static int qemuDomainSnapshotDiscard(struct
qemud_driver *driver,
snap->def->parent);
} else {
parentsnap->def->current = true;
- if (qemuDomainSnapshotWriteMetadata(vm, snap,
+ if (qemuDomainSnapshotWriteMetadata(vm, parentsnap,
driver->snapshotDir) < 0) {
VIR_WARN("failed to set parent snapshot '%s' as
current",
snap->def->parent);
--
Eric Blake eblake at redhat.com +1-801-349-2682
Libvirt virtualization library http://libvirt.org
More information about the libvir-list
mailing list