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