From cfcdf5ff01aa96a0afcf8f1984967c7eaa2b4330 Mon Sep 17 00:00:00 2001 From: Michael Chapman Date: Wed, 8 Apr 2015 16:51:51 +1000 Subject: [PATCH] qemu_driver: check caps after starting block job 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 --- 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 6132674168..921417c093 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -16470,12 +16470,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; @@ -16486,6 +16480,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; -- GitLab