On 04/02/2012 10:38 AM, Stefan Bader wrote: > xend_internal: Use domain/status for shutdown check > > On newer xend (v3.x and after) there is no state and domid reported > for inactive domains. When initially creating connections this is > handled in various places by assigning domain->id = -1. > But once an instance has been running, the id is set to the current > domain id. And it does not change when the instance is shut down. > So when querying the domain info, the hypervisor driver, which gets > asked first will indicate it cannot find information, then the > xend driver is asked and will set the status to NOSTATE because it > checks for the -1 domain id. > Checking domain/status for 0 seems to be more reliable for that. > > One note: I am not sure whether the domain->id also should get set > back to -1 whenever any sub-driver thinks the instance is no longer > running. > > BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=746007 > BugLink: http://bugs.launchpad.net/bugs/929626 > > Signed-off-by: Stefan Bader <stefan.bader@xxxxxxxxxxxxx> > > Index: libvirt-0.9.8/src/xen/xend_internal.c > =================================================================== > --- libvirt-0.9.8.orig/src/xen/xend_internal.c 2011-12-04 08:15:00.000000000 +0100 > +++ libvirt-0.9.8/src/xen/xend_internal.c 2012-03-23 11:07:43.575529377 +0100 > @@ -989,9 +989,11 @@ > state = VIR_DOMAIN_BLOCKED; > else if (strchr(flags, 'r')) > state = VIR_DOMAIN_RUNNING; > - } else if (domain->id < 0) { > - /* Inactive domains don't have a state reported, so > - mark them SHUTOFF, rather than NOSTATE */ > + } else if (sexpr_int(root, "domain/status") == 0) { Maybe this should be (domain->id < 0 || sexpr_int(root, ... Just to be sure we preserve behavior for older xen. Also, please send patches with [PATCH] prefix. Thanks, Cole > + /* As far as I can see the domain->id is a bad sign for checking > + * inactive domains as this is inaccurate after the domain has > + * been running once. However domain/status from xend seems to > + * be always present and 0 for inactive domains. */ > state = VIR_DOMAIN_SHUTOFF; > } > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list