]> 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)
committerEric Blake <eblake@redhat.com>
Tue, 1 May 2012 14:54:18 +0000 (08:54 -0600)
Signed-off-by: Josh Durgin <josh.durgin@dreamhost.com>
src/qemu/qemu_driver.c

index 78899a4734ebeb889a519ffea22dc0401c903699..86e82d660a296f0c9224d40cdb642eb2d32afb69 100644 (file)
@@ -9605,12 +9605,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;
         }
     }