On 05/10/2011 07:39 AM, Jiri Denemark wrote:
A qemu domain can get paused when libvirtd is stopped (e.g., because
of
I/O error) so we should check its current state when reconnecting to it.
---
Notes:
Version 2:
- new patch
Good catch. I see danpb reviewed the rest of the series, but missed
this one.
+++ b/src/qemu/qemu_process.c
@@ -1881,6 +1881,37 @@ qemuProcessFiltersInstantiate(virConnectPtr conn,
return err;
}
+static int
+qemuProcessUpdateState(struct qemud_driver *driver, virDomainObjPtr vm)
+{
+ qemuDomainObjPrivatePtr priv = vm->privateData;
+ virDomainState state;
+ bool running;
+ int ret;
+
+ qemuDomainObjEnterMonitorWithDriver(driver, vm);
+ ret = qemuMonitorGetStatus(priv->mon, &running);
+ qemuDomainObjExitMonitorWithDriver(driver, vm);
+
+ if (ret < 0 || !virDomainObjIsActive(vm))
+ return -1;
I half debated about whether virDomainObjIsActive returning fals can
still successfully result in a state update; but I convinced myself that
this is tied to a qemu process, and if the process goes away, then
elsewhere in the code correctly changes the state, and that this only
needs to probe the monitor for a live qemu process.
ACK.
--
Eric Blake eblake(a)redhat.com +1-801-349-2682
Libvirt virtualization library
http://libvirt.org