| 
    
 [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 11/29] libxl: events: Make libxl__async_exec_* pass caller an rc
 On Tue, 2015-02-10 at 20:09 +0000, Ian Jackson wrote:
> The internal user of libxl__async_exec_start et al now gets an rc as
> well as the process's exit status.
> 
> For now this is always either 0 or ERROR_FAIL, but with ao
> cancellation this will possibly be CANCELLED or TIMEDOUT too.
> 
> Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
> ---
> v2: New patch due to rebause; v1 had changes to device_hotplug_*
>      scripts instead.
>     Callback now gets unambiguous information about error situation:
>      previously, if only thing that went wrong was that child died
>      badly, rc would be FAILED, which was unambigously; now rc=0.
>     Add a comment document the meaning of the rc and status parameters
>      to the callback.
> ---
>  tools/libxl/libxl_aoutils.c         |    9 ++++++---
>  tools/libxl/libxl_device.c          |   13 +++++++++----
>  tools/libxl/libxl_internal.h        |   11 ++++++++++-
>  tools/libxl/libxl_netbuffer.c       |   19 ++++++++++---------
>  tools/libxl/libxl_remus_disk_drbd.c |    8 +++++---
>  5 files changed, 40 insertions(+), 20 deletions(-)
> 
> diff --git a/tools/libxl/libxl_aoutils.c b/tools/libxl/libxl_aoutils.c
> index 754e2d1..891cdb8 100644
> --- a/tools/libxl/libxl_aoutils.c
> +++ b/tools/libxl/libxl_aoutils.c
> @@ -483,11 +483,12 @@ static void async_exec_done(libxl__egc *egc,
>      libxl__ev_time_deregister(gc, &aes->time);
>  
>      if (status) {
> -        libxl_report_child_exitstatus(CTX, LIBXL__LOG_ERROR,
> -                                      aes->what, pid, status);
> +        if (!aes->rc)
Could be one "if (status && !aes->rc)", unless perhaps there is more
code to come in this block?
> +                        libxl__async_exec_state *aes, int rc, int status);
> +/*
> + * Meaning of status and rc:
> + *  rc==0, status==0    all went well
> + *  rc==0, status!=0    everything OK except child exited nonzero (logged)
> + *  rc!=0               something else went wrong (status is real
> + *                       exit status, maybe reflecting SIGKILL if aes
> + *                       code killed the child).  Logged unless CANCELLED.
I'm unclear on whether status is valid in this third case or not. I
think you are saying that it is (probably?) valid but if rc!=0 the
caller likely doesn't actually care what it is?
Everything else looks fine to me.
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
 
  | 
  
![]()  | 
            
         Lists.xenproject.org is hosted with RackSpace, monitoring our  |