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

Shanzhi Yu shyu at redhat.com
Wed Jun 24 08:48:16 UTC 2015



On 06/24/2015 03:11 PM, Peter Krempa wrote:
> 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

This can't avoid the cases that the source file has a raw format file as
backing file.

>
> 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)) {

-- 
Regards
shyu




More information about the libvir-list mailing list