[libvirt] qemu: Add timeout for monitor to avoid virsh getting stuck when monitor gets die.

Jiri Denemark jdenemar at redhat.com
Wed Apr 6 08:51:43 UTC 2011


On Wed, Apr 06, 2011 at 12:13:10 +0800, Mark Wu wrote:
> Hello Guys,
> 
> When the qemu process becomes hung,  virsh will get stuck on the hung 
> guest and can't move forward.  It can be reproduced by the following steps:
> 
> 1. setup a virt guest with qemu-kvm, and start it
> 2. stop qemu process with following:
>   kill -STOP  `ps aux | grep qemu | grep -v grep | awk '{print $2}'`
> 3. run the following command:
> virsh list
> 
> I think we can add a timeout for qemu monitor to resolve this problem: 
> using virCondWaitUntil instead of virCondWait in qemuMonitorSend. What's 
> your opinions?

This is not the right approach. Introducing a timeout into all monitor command
send to qemu is a bad thing. I think the right approach is to have a simple
API which would just return domain's state without talking to its monitor or
doing other complicated stuff. The new API could then be used by virsh list to
list all domains even though they are blocked on qemu monitor. After all,
virsh is not really interested in current memory consumption of domains when
listing them.

The new API could also provide a reason which lead to current state so that
one can see the reason even without watching for libvirt events.

Jirka




More information about the libvir-list mailing list