[libvirt] xend_internal: Use domain/status for shutdown check
Cole Robinson
crobinso at redhat.com
Sun Apr 8 13:08:06 UTC 2012
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 at canonical.com>
>
> 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;
> }
>
More information about the libvir-list
mailing list