[libvirt] [PATCH] qemu: blockcopy: Forbid using persistent bitmap granularity with raw vols

Peter Krempa pkrempa at redhat.com
Wed Jun 24 07:11:31 UTC 2015


qemu returns error but only in the event after the block job actually
starts. Reject it upfront for a better error message.

Instead of:
$ virsh blockcopy vm hdc /tmp/raw.img --granularity 4096 --verbose --wait
error: Block Copy unexpectedly failed

You will now get:
$ virsh blockcopy vm hdc /tmp/raw.img --granularity 4096 --verbose --wait
error: unsupported configuration: granularity can't be used with target volume format

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1233115
---
 src/qemu/qemu_driver.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index c1373de..f570879 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -16671,6 +16671,16 @@ qemuDomainBlockCopyCommon(virDomainObjPtr vm,
         goto endjob;
     }

+    /* blacklist granularity with some known-bad formats */
+    if (granularity &&
+        (mirror->format == VIR_STORAGE_FILE_RAW ||
+         (mirror->format <= VIR_STORAGE_FILE_NONE &&
+          disk->src->format == VIR_STORAGE_FILE_RAW))) {
+        virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                       _("granularity can't be used with target volume format"));
+        goto endjob;
+    }
+
     /* Prepare the destination file.  */
     /* XXX Allow non-file mirror destinations */
     if (!virStorageSourceIsLocalStorage(mirror)) {
-- 
2.4.1




More information about the libvir-list mailing list