diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 21036a4f0e..3f221a44cd 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -1988,16 +1988,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")); @@ -2086,9 +2086,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)) { @@ -2109,6 +2107,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")); @@ -17659,12 +17660,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")); @@ -17779,12 +17780,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")); @@ -17888,12 +17889,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"));