This way checks requiring the job can be done in qemuDomainAgentAvailable. --- src/qemu/qemu_driver.c | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index e282464..d5b9d0d 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -1939,16 +1939,16 @@ static int qemuDomainShutdownFlags(virDomainPtr dom, unsigned int flags) if (virDomainShutdownFlagsEnsureACL(dom->conn, vm->def, flags) < 0) goto cleanup; + if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) + goto cleanup; + agentForced = agentRequested && !acpiRequested; if (!qemuDomainAgentAvailable(priv, agentForced)) { if (agentForced) - goto cleanup; + goto endjob; useAgent = false; } - if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) - goto cleanup; - if (!virDomainObjIsActive(vm)) { virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("domain is not running")); @@ -2037,9 +2037,7 @@ qemuDomainReboot(virDomainPtr dom, unsigned int flags) priv->agent)) useAgent = true; - if (useAgent && !qemuDomainAgentAvailable(priv, true)) { - goto cleanup; - } else { + if (!useAgent) { #if WITH_YAJL if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MONITOR_JSON)) { if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_NO_SHUTDOWN)) { @@ -2060,6 +2058,9 @@ qemuDomainReboot(virDomainPtr dom, unsigned int flags) if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; + if (useAgent && !qemuDomainAgentAvailable(priv, true)) + goto endjob; + if (!virDomainObjIsActive(vm)) { virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("domain is not running")); @@ -17610,12 +17611,12 @@ qemuDomainPMSuspendForDuration(virDomainPtr dom, } } - if (!qemuDomainAgentAvailable(priv, true)) - goto cleanup; - if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; + if (!qemuDomainAgentAvailable(priv, true)) + goto endjob; + if (!virDomainObjIsActive(vm)) { virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("domain is not running")); @@ -17730,12 +17731,12 @@ qemuDomainQemuAgentCommand(virDomainPtr domain, goto cleanup; } - if (!qemuDomainAgentAvailable(priv, true)) - goto cleanup; - if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; + if (!qemuDomainAgentAvailable(priv, true)) + goto endjob; + if (!virDomainObjIsActive(vm)) { virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("domain is not running")); @@ -17839,12 +17840,12 @@ qemuDomainFSTrim(virDomainPtr dom, goto cleanup; } - if (!qemuDomainAgentAvailable(priv, true)) - goto cleanup; - if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; + if (!qemuDomainAgentAvailable(priv, true)) + goto endjob; + if (!virDomainObjIsActive(vm)) { virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("domain is not running")); -- 2.0.5 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list