Re: init's children list is long and slows reaping children.

Oleg Nesterov
2007-04-10T14:34:03Z

On 04/10, Ingo Molnar wrote:
>
> * Eric W. Biederman <ebiederm@xmission.com> wrote:
>
> > Ingo Molnar <mingo@elte.hu> writes:
> >
> > > no. Two _completely separate_ lists.
> > >
> > > i.e. a to-be-reaped task will still be on the main list _too_. The
> > > main list is for all the PID semantics rules. The reap-list is just
> > > for wait4() processing. The two would be completely separate.
> >
> > And what pray tell except for heuristics is the list of children used
> > for?
>
> on a second thought: the p->children list is needed for the whole
> child/parent task tree, which is needed for sys_getppid(). The question
> is, does anything require us to reparent to within the same thread
> group?

No! That is why I suggest (a long ago, in fact) to move ->children into
->signal_struct. When sub-thread forks, we set ->parent = group_leader.
We don't need forget_original_parent() until the last thead exists. This
also simplify do_wait().

However, this breaks the current ->pdeath_signal behaviour. In fact (and
Eric thinks the same) this _fixes_ this behaviour, but may break things.

Oleg.