]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Disallow pivot of shared disks to unsupported storage
authorPeter Krempa <pkrempa@redhat.com>
Wed, 15 Nov 2017 13:33:11 +0000 (14:33 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 23 Nov 2017 17:26:48 +0000 (18:26 +0100)
Pivoting to a unsupported storage type might break the assumption that
shared disks will not corrupt metadata.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1511480

src/qemu/qemu_driver.c

index 5a59654d1b3a1288845656b2c5ebc8c68554b807..0ec5efbc2c3ec25cfe86f092b470a7c77ec22bc4 100644 (file)
@@ -16501,6 +16501,16 @@ qemuDomainBlockPivot(virQEMUDriverPtr driver,
         goto cleanup;
     }
 
+    /* When pivoting to a shareable disk we need to make sure that the disk can
+     * be safely shared, since block copy might have changed the format. */
+    if (disk->src->shared && !disk->src->readonly &&
+        !qemuBlockStorageSourceSupportsConcurrentAccess(disk->mirror)) {
+        virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+                       _("can't pivot a shared disk to a storage volume not "
+                         "supporting sharing"));
+        goto cleanup;
+    }
+
     /* For active commit, the mirror is part of the already labeled
      * chain.  For blockcopy, we previously labeled only the top-level
      * image; but if the user is reusing an external image that