|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 3/3] libxl: Domain destroy: fork
On Tue, Mar 17, 2015 at 09:30:59AM -0600, Jim Fehlig wrote:
> From: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
>
> Call xc_domain_destroy in a subprocess. That allows us to do so
> asynchronously, rather than blocking the whole process calling libxl.
>
> The changes in detail:
>
> * Provide an libxl__ev_child in libxl__domain_destroy_state, and
> initialise it in libxl__domain_destroy. There is no possibility
> to `clean up' a libxl__ev_child, but there need to clean it up, as
> the control flow ensures that we only continue after the child has
> exited.
>
> * Call libxl__ev_child_fork at the right point and put the call to
> xc_domain_destroy and associated logging in the child. (The child
> opens a new xenctrl handle because we mustn't use the parent's.)
>
> * Consequently, the success return path from domain_destroy_domid_cb
> no longer calls dis->callback. Instead it simply returns.
>
> * We plumb the errorno value through the child's exit status, if it
> fits. This means we normally do the logging only in the parent.
>
> * Incidentally, we fix the bug that we were treating the return value
> from xc_domain_destroy as an errno value when in fact it is a
> return value from do_domctl (in this case, 0 or -1 setting errno).
>
> Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
> Reviewed-by: Jim Fehlig <jfehlig@xxxxxxxx>
> Tested-by: Jim Fehlig <jfehlig@xxxxxxxx>
Reviewed-by: Wei Liu <wei.liu2@xxxxxxxxxx>
One nit below.
> ---
[...]
> + ctx->xch = xc_interface_open(ctx->lg,0,0);
> + if (!ctx->xch) goto badchild;
> +
> + rc = xc_domain_destroy(ctx->xch, domid);
> + if (rc < 0) goto badchild;
> + _exit(0);
> +
> + badchild:
> + if (errno > 0 && errno < 126) {
> + _exit(errno);
> + } else {
> + LOGE(ERROR,
> + "xc_domain_destroy failed for %d (with difficult errno value %d)",
Indentation is wrong.
Wei.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |