]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: snapshot: Unify conditions checking whether snapshot needs to be taken
authorPeter Krempa <pkrempa@redhat.com>
Tue, 3 Jul 2018 05:52:11 +0000 (07:52 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 20 Jul 2018 11:39:44 +0000 (13:39 +0200)
In the cleanup path we already checked whether a snapshot needed to be
taken by looking into the collected data. Use the same approach when
creating the snapshot command data and when committing the changes to the
domain definition.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_driver.c

index 3f1d4c3d50df95b17c9b4758a6ecc69ad2deca5d..abc175ec820ff1379323f35f6e9eb58aba810a39 100644 (file)
@@ -15015,7 +15015,7 @@ qemuDomainSnapshotCreateDiskActive(virQEMUDriverPtr driver,
       * VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL with a valid file name and
       * qcow2 format.  */
     for (i = 0; i < snap->def->ndisks; i++) {
-        if (snap->def->disks[i].snapshot == VIR_DOMAIN_SNAPSHOT_LOCATION_NONE)
+        if (!diskdata[i].src)
             continue;
 
         ret = qemuDomainSnapshotCreateSingleDiskActive(driver, vm,
@@ -15039,8 +15039,14 @@ qemuDomainSnapshotCreateDiskActive(virQEMUDriverPtr driver,
             goto error;
         }
 
-        for (i = 0; i < snap->def->ndisks; i++)
-            qemuDomainSnapshotUpdateDiskSources(&diskdata[i], &persist);
+        for (i = 0; i < snap->def->ndisks; i++) {
+            qemuDomainSnapshotDiskDataPtr dd = &diskdata[i];
+
+            if (!dd->src)
+                continue;
+
+            qemuDomainSnapshotUpdateDiskSources(dd, &persist);
+        }
     }
 
  error: