[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCHv2 07/26] snapshot: track current snapshot across restarts



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 redhat com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]