[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