diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c index 51e60d21e383e0c3926541eee1fae71aaa2a34e9..804c424ca0d4ec2cb0ba5e29125180f2908643e9 100644 --- a/src/qemu/qemu_agent.c +++ b/src/qemu/qemu_agent.c @@ -1294,7 +1294,10 @@ int qemuAgentShutdown(qemuAgentPtr mon, if (!cmd) return -1; - mon->await_event = QEMU_AGENT_EVENT_SHUTDOWN; + if (mode == QEMU_AGENT_SHUTDOWN_REBOOT) + mon->await_event = QEMU_AGENT_EVENT_RESET; + else + mon->await_event = QEMU_AGENT_EVENT_SHUTDOWN; ret = qemuAgentCommand(mon, cmd, &reply, VIR_DOMAIN_QEMU_AGENT_COMMAND_BLOCK); diff --git a/src/qemu/qemu_agent.h b/src/qemu/qemu_agent.h index 528fee12e413bfffbd88bfa7bcd15752e2657f2f..18740ba6a59f1927367ca1ba177cb49e6c4dcc99 100644 --- a/src/qemu/qemu_agent.h +++ b/src/qemu/qemu_agent.h @@ -55,7 +55,8 @@ void qemuAgentClose(qemuAgentPtr mon); typedef enum { QEMU_AGENT_EVENT_NONE = 0, QEMU_AGENT_EVENT_SHUTDOWN, - QEMU_AGENT_EVENT_SUSPEND + QEMU_AGENT_EVENT_SUSPEND, + QEMU_AGENT_EVENT_RESET, } qemuAgentEvent; void qemuAgentNotifyEvent(qemuAgentPtr mon, diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 5c3b89ebe234ba5638838ab283b97a81e81d629d..93653c6da8c1ecdaf4887d9a138428d8f977a9ed 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -511,9 +511,15 @@ qemuProcessHandleReset(qemuMonitorPtr mon ATTRIBUTE_UNUSED, { struct qemud_driver *driver = qemu_driver; virDomainEventPtr event; + qemuDomainObjPrivatePtr priv; virDomainObjLock(vm); + event = virDomainEventRebootNewFromObj(vm); + priv = vm->privateData; + if (priv->agent) + qemuAgentNotifyEvent(priv->agent, QEMU_AGENT_EVENT_RESET); + virDomainObjUnlock(vm); if (event) {