From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jim Fehlig Subject: Re: [PATCH 00/12] libxl: fork: SIGCHLD flexibility Date: Fri, 17 Jan 2014 15:29:35 -0700 Message-ID: <52D9AECF.6050309@suse.com> References: <1389975845-1195-1-git-send-email-ian.jackson@eu.citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1389975845-1195-1-git-send-email-ian.jackson@eu.citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Ian Jackson Cc: xen-devel@lists.xensource.com, Ian Campbell List-Id: xen-devel@lists.xenproject.org Ian Jackson wrote: > libvirt reaps its children synchronously and has no central pid > registry and no dispatch mechanism. libxl does have a pid registry so > can provide a selective reaping facility, but that is not currently > exposed. Here we expose it. > > Also, libvirt has multiple libxl ctxs. Prior to this series it is not > possible for those to share SIGCHLD: libxl expects either the > application, or _one_ libxl ctx, to own SIGCHLD. In the final patch > of this series we relax this restriction by having libxl maintain a > process-wide list of the libxl ctxs that are supposed to be interested > in SIGCHLD. > > I have not tested the selective reaping functionality. The most > plausible test environment for that is a suitably modified libvirt. > I've been testing this series (plus 1/3 in your "tools: Miscellanous fixes for 4.4" series) on a suitably modified libvirt and the results look good so far :). I'm running four scripts concurrently that - start / stop domA - save / restore domB - reboot domC - get stats on dom{A,B,C} They have been running for about an hour now, and I haven't noticed any problems Thanks! Jim > I have tested the new SIGCHLD plumbing, at least with a single ctx, > since xl uses it. Testing that it works in a real multi-ctx > application is again probably most easily done with libvirt. > > I hope that with this series applied, simply having libvirt pass > libxl_sigchld_owner_libxl_always_selective_reap should be sufficient > for everything to work. There is no need to specifically request the > SIGCHLD-sharing. > > a 01/12] libxl: fork: Break out checked_waitpid > a 02/12] libxl: fork: Break out childproc_reaped_ours > a 03/12] libxl: fork: Clarify docs for libxl_sigchld_owner > * 04/12] libxl: fork: Document libxl_sigchld_owner_libxl better > a 05/12] libxl: fork: assert that chldmode is right > a 06/12] libxl: fork: Provide libxl_childproc_sigchld_occurred > +a 07/12] libxl: fork: Provide ..._always_selective_reap > a 08/12] libxl: fork: Provide LIBXL_HAVE_SIGCHLD_SELECTIVE_REAP > * 09/12] libxl: fork: Rename sigchld handler functions > * 10/12] libxl: fork: Break out sigchld_installhandler_core > * 11/12] libxl: fork: Break out sigchld_sethandler_raw > * 12/12] libxl: fork: Share SIGCHLD handler amongst ctxs > > (a = acked; * = new patch; + = modified patch) > >