提交 cfcdf5ff 编写于 作者: M Michael Chapman 提交者: Michal Privoznik

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: NMichael Chapman <mike@very.puzzling.org>
上级 72df8314
...@@ -16470,12 +16470,6 @@ qemuDomainGetBlockJobInfo(virDomainPtr dom, const char *path, ...@@ -16470,12 +16470,6 @@ qemuDomainGetBlockJobInfo(virDomainPtr dom, const char *path,
} }
priv = vm->privateData; 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) if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_QUERY) < 0)
goto cleanup; goto cleanup;
...@@ -16486,6 +16480,13 @@ qemuDomainGetBlockJobInfo(virDomainPtr dom, const char *path, ...@@ -16486,6 +16480,13 @@ qemuDomainGetBlockJobInfo(virDomainPtr dom, const char *path,
goto endjob; 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); device = qemuDiskPathToAlias(vm, path, &idx);
if (!device) if (!device)
goto endjob; goto endjob;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册