]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: allow snapshotting of sheepdog and rbd disks
authorJosh Durgin <josh.durgin@dreamhost.com>
Tue, 1 May 2012 05:55:22 +0000 (22:55 -0700)
committerCole Robinson <crobinso@redhat.com>
Thu, 7 Jun 2012 22:06:05 +0000 (18:06 -0400)
Signed-off-by: Josh Durgin <josh.durgin@dreamhost.com>
(cherry picked from commit b57e01532a1691897e27f20eccfd667a46ee374e)

src/qemu/qemu_driver.c

index 38aada6667a0d1cc1f1d6b434e5058a9d4ffe2b8..617cbd09729607cc7a296053dd0ad5e7fa5e9b3a 100644 (file)
@@ -9587,12 +9587,18 @@ qemuDomainSnapshotIsAllowed(virDomainObjPtr vm)
      * that succeed as well
      */
     for (i = 0; i < vm->def->ndisks; i++) {
-        if ((vm->def->disks[i]->device == VIR_DOMAIN_DISK_DEVICE_LUN) ||
-            (vm->def->disks[i]->device == VIR_DOMAIN_DISK_DEVICE_DISK &&
-             STRNEQ_NULLABLE(vm->def->disks[i]->driverType, "qcow2"))) {
+        virDomainDiskDefPtr disk = vm->def->disks[i];
+        if (disk->type == VIR_DOMAIN_DISK_TYPE_NETWORK &&
+            (disk->protocol == VIR_DOMAIN_DISK_PROTOCOL_SHEEPDOG ||
+             disk->protocol == VIR_DOMAIN_DISK_PROTOCOL_RBD))
+            continue;
+
+        if ((disk->device == VIR_DOMAIN_DISK_DEVICE_LUN) ||
+            (disk->device == VIR_DOMAIN_DISK_DEVICE_DISK &&
+             STRNEQ_NULLABLE(disk->driverType, "qcow2"))) {
             qemuReportError(VIR_ERR_OPERATION_INVALID,
                             _("Disk '%s' does not support snapshotting"),
-                            vm->def->disks[i]->src);
+                            disk->src);
             return false;
         }
     }