On Thu, Jul 25, 2019 at 01:25:03PM +0200, Oleg Nesterov wrote: > On 07/25, Christian Brauner wrote: > > > > On Thu, Jul 25, 2019 at 12:35:44PM +0200, Oleg Nesterov wrote: > > > > > > I have to admit this feature looks a bit exotic to me... > > > > It might look like it from the kernels perspective but from the feedback > > on this when presenting on this userspace has real usecases for this. > > OK... > > but then perhaps we can make PF_WAIT_PID more flexible. I've changed this to be a property on signal_struct, i.e. a bitfield entry following the {is,has}_child_subreaper entries. > > Say, we can add the new WXXX wait option and change eligible_child() > > if ((p->flags & PF_WAIT_PID) && (wo->options & WXXX)) > return 0; > > this way the parent can tell waitid() whether the PF_WAIT_PID tasks should > be filtered or not. > > And if we do this we can even add PR_SET_WAIT_PID/PR_CLR_WAIT_PID instead > of the new CLONE_ flag. Hm, I prefer to not do this. The idea is that this is a property of the pidfd itself and not of the waitid() call. And currently, I don't think it makes sense to change this property at runtime. What might make sense is to remove this property when a task gets reparented, i.e. when its parent has died.