[libvirt] [PATCHv4 31/51] snapshot: allow full domain xml in snapshot

Eric Blake eblake at redhat.com
Sat Sep 3 14:09:24 UTC 2011


On 09/01/2011 10:25 PM, Eric Blake wrote:
> Just like VM saved state images (virsh save), snapshots MUST
> track the inactive domain xml to detect any ABI incompatibilities.
>
> The indentation is not perfect, but functionality comes before form.
>
> @@ -1638,6 +1641,12 @@ qemuDomainSnapshotWriteMetadata(virDomainObjPtr vm,
>                           _("failed to create snapshot file '%s'"), snapFile);
>           goto cleanup;
>       }
> +    /* XXX need virsh snapshot-edit, before this makes sense:
> +     * char *tmp;
> +     * virAsprintf(&tmp, "snapshot-edit %s", vm->def->name);
> +     * virEmitXMLWarning(fd, snapshot->def->name, tmp);
> +     * VIR_FREE(tmp);
> +     */

Turns out I've implemented snapshot-edit earlier in the series, so 
squashing this in:

diff --git i/docs/formatsnapshot.html.in w/docs/formatsnapshot.html.in
index 2fe9e4d..91799b4 100644
--- i/docs/formatsnapshot.html.in
+++ w/docs/formatsnapshot.html.in
@@ -72,7 +72,8 @@
          in <code>virDomainRevertToSnapshot()</code>.  Newer versions
          of libvirt store the entire
          inactive <a href="formatdomain.html">domain configuration</a>
-        at the time of the snapshot.  Readonly.
+        at the time of the snapshot (<span class="since">since
+        0.9.5</span>).  Readonly.
        </dd>
      </dl>

diff --git i/src/qemu/qemu_driver.c w/src/qemu/qemu_driver.c
index 17b97eb..a1557b1 100644
--- i/src/qemu/qemu_driver.c
+++ w/src/qemu/qemu_driver.c
@@ -1612,6 +1612,7 @@ qemuDomainSnapshotWriteMetadata(virDomainObjPtr vm,
      char *snapDir = NULL;
      char *snapFile = NULL;
      char uuidstr[VIR_UUID_STRING_BUFLEN];
+    char *tmp;

      virUUIDFormat(vm->def->uuid, uuidstr);
      newxml = virDomainSnapshotDefFormat(uuidstr, snapshot->def,
@@ -1641,12 +1642,14 @@ qemuDomainSnapshotWriteMetadata(virDomainObjPtr vm,
                          _("failed to create snapshot file '%s'"), 
snapFile);
          goto cleanup;
      }
-    /* XXX need virsh snapshot-edit, before this makes sense:
-     * char *tmp;
-     * virAsprintf(&tmp, "snapshot-edit %s", vm->def->name);
-     * virEmitXMLWarning(fd, snapshot->def->name, tmp);
-     * VIR_FREE(tmp);
-     */
+
+    if (virAsprintf(&tmp, "snapshot-edit %s", vm->def->name) < 0) {
+        virReportOOMError();
+        goto cleanup;
+    }
+    virEmitXMLWarning(fd, snapshot->def->name, tmp);
+    VIR_FREE(tmp);
+
      if (safewrite(fd, newxml, strlen(newxml)) != strlen(newxml)) {
          virReportSystemError(errno, _("Failed to write snapshot data 
to %s"),
                               snapFile);


-- 
Eric Blake   eblake at redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org




More information about the libvir-list mailing list