[libvirt] [PATCH] qemu_driver: check caps after starting block job

Michal Privoznik mprivozn at redhat.com
Wed Apr 8 09:22:02 UTC 2015


On 08.04.2015 08:51, Michael Chapman wrote:
> Currently we check qemuCaps before starting the block job. But qemuCaps
> isn't available on a stopped domain, which means we get a misleading
> error message in this case:
> 
>   # virsh domstate example
>   shut off
> 
>   # virsh blockjob example vda
>   error: unsupported configuration: block jobs not supported with this QEMU binary
> 
> Move the qemuCaps check into the block job so that we are guaranteed the
> domain is running.
> 
> Signed-off-by: Michael Chapman <mike at very.puzzling.org>
> ---
>  src/qemu/qemu_driver.c | 13 +++++++------
>  1 file changed, 7 insertions(+), 6 deletions(-)
> 
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index becf415..cb9295e 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -16476,12 +16476,6 @@ qemuDomainGetBlockJobInfo(virDomainPtr dom, const char *path,
>      }
>  
>      priv = vm->privateData;
> -    if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKJOB_ASYNC) &&
> -        !virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKJOB_SYNC)) {
> -        virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> -                       _("block jobs not supported with this QEMU binary"));
> -        goto cleanup;
> -    }
>  
>      if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_QUERY) < 0)
>          goto cleanup;
> @@ -16492,6 +16486,13 @@ qemuDomainGetBlockJobInfo(virDomainPtr dom, const char *path,
>          goto endjob;
>      }
>  
> +    if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKJOB_ASYNC) &&
> +        !virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKJOB_SYNC)) {
> +        virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> +                       _("block jobs not supported with this QEMU binary"));
> +        goto endjob;
> +    }
> +
>      device = qemuDiskPathToAlias(vm, path, &idx);
>      if (!device)
>          goto endjob;
> 

ACked and pushed.

Michal




More information about the libvir-list mailing list