[libvirt] [PATCH] qemu: lifecycle: make agent-mode shutdown and reboot timeout

2015-04-01 Thread zhang bo
When we shutdown/reboot a guest using agent-mode, if the guest itself blocks 
infinitely,
libvirt would block in qemuAgentShutdown() forever.
Thus, we set a timeout for shutdown/reboot, from our experience, 60 seconds 
would be fine.

Signed-off-by: Zhang Bo oscar.zhan...@huawei.com
Signed-off-by: Wang Yufei james.wangyu...@huawei.com
---
 include/libvirt/libvirt-qemu.h | 1 +
 src/qemu/qemu_agent.c  | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/include/libvirt/libvirt-qemu.h b/include/libvirt/libvirt-qemu.h
index 0c5d650..2bb8ee8 100644
--- a/include/libvirt/libvirt-qemu.h
+++ b/include/libvirt/libvirt-qemu.h
@@ -49,6 +49,7 @@ typedef enum {
 VIR_DOMAIN_QEMU_AGENT_COMMAND_BLOCK = -2,
 VIR_DOMAIN_QEMU_AGENT_COMMAND_DEFAULT = -1,
 VIR_DOMAIN_QEMU_AGENT_COMMAND_NOWAIT = 0,
+VIR_DOMAIN_QEMU_AGENT_COMMAND_SHUTDOWN = 60,
 } virDomainQemuAgentCommandTimeoutValues;

 char *virDomainQemuAgentCommand(virDomainPtr domain, const char *cmd,
diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c
index a7b3279..548d580 100644
--- a/src/qemu/qemu_agent.c
+++ b/src/qemu/qemu_agent.c
@@ -1300,7 +1300,7 @@ int qemuAgentShutdown(qemuAgentPtr mon,
 else
 mon-await_event = QEMU_AGENT_EVENT_SHUTDOWN;
 ret = qemuAgentCommand(mon, cmd, reply, false,
-   VIR_DOMAIN_QEMU_AGENT_COMMAND_BLOCK);
+   VIR_DOMAIN_QEMU_AGENT_COMMAND_SHUTDOWN);

 virJSONValueFree(cmd);
 virJSONValueFree(reply);
-- 
1.7.12.4


--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


Re: [libvirt] [PATCH] qemu: lifecycle: make agent-mode shutdown and reboot timeout

2015-04-01 Thread Michal Privoznik
On 01.04.2015 11:13, zhang bo wrote:
 When we shutdown/reboot a guest using agent-mode, if the guest itself blocks 
 infinitely,
 libvirt would block in qemuAgentShutdown() forever.
 Thus, we set a timeout for shutdown/reboot, from our experience, 60 seconds 
 would be fine.
 
 Signed-off-by: Zhang Bo oscar.zhan...@huawei.com
 Signed-off-by: Wang Yufei james.wangyu...@huawei.com
 ---
  include/libvirt/libvirt-qemu.h | 1 +
  src/qemu/qemu_agent.c  | 2 +-
  2 files changed, 2 insertions(+), 1 deletion(-)
 
 diff --git a/include/libvirt/libvirt-qemu.h b/include/libvirt/libvirt-qemu.h
 index 0c5d650..2bb8ee8 100644
 --- a/include/libvirt/libvirt-qemu.h
 +++ b/include/libvirt/libvirt-qemu.h
 @@ -49,6 +49,7 @@ typedef enum {
  VIR_DOMAIN_QEMU_AGENT_COMMAND_BLOCK = -2,
  VIR_DOMAIN_QEMU_AGENT_COMMAND_DEFAULT = -1,
  VIR_DOMAIN_QEMU_AGENT_COMMAND_NOWAIT = 0,
 +VIR_DOMAIN_QEMU_AGENT_COMMAND_SHUTDOWN = 60,
  } virDomainQemuAgentCommandTimeoutValues;
 
  char *virDomainQemuAgentCommand(virDomainPtr domain, const char *cmd,
 diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c
 index a7b3279..548d580 100644
 --- a/src/qemu/qemu_agent.c
 +++ b/src/qemu/qemu_agent.c
 @@ -1300,7 +1300,7 @@ int qemuAgentShutdown(qemuAgentPtr mon,
  else
  mon-await_event = QEMU_AGENT_EVENT_SHUTDOWN;
  ret = qemuAgentCommand(mon, cmd, reply, false,
 -   VIR_DOMAIN_QEMU_AGENT_COMMAND_BLOCK);
 +   VIR_DOMAIN_QEMU_AGENT_COMMAND_SHUTDOWN);
 
  virJSONValueFree(cmd);
  virJSONValueFree(reply);
 

Looks good to me. ACK after freeze.

Michal

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list