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.ba...@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;
>      }
>  

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

Reply via email to