Re: [RFC, PATCH 1/3] introduce SYS_CLONE_MASK

Albert Cahalan
2007-05-29T03:23:17Z

Jan Engelhardt writes:
> On Apr 10 2007 17:47, Jan Engelhardt wrote:
>> On Apr 8 2007 20:57, Oleg Nesterov wrote:

>>> Anyway, re-parenting to swapper breaks pstree, it doesn't
>>> show kernel threads. And if ->parent == /sbin/init, we can't
>>> remove us from ->children (unless we forbid sub-thread-of-init
>>> exec). So the only safe change is set ->exit_state = -1.
>>
>> Then we have to fix pstree and all that. (In fact, I'm
>> trying to patch `ps f` to DTRT ;p)
>
> Done that and the result is that `ps afwx` now looks like:
>
> PID TTY STAT TIME COMMAND
> 2722 ? S 0:00 [lockd]
...
> 3 ? S< 0:00 [events/0]
> 2 ? SN 0:00 [ksoftirqd/0]
> 1 ? Ss 0:02 init [3]
> 537 ? S<s 0:02 \_ /sbin/udevd --daemon
> 1600 ? Ss 0:00 \_ /usr/bin/dbus-daemon --system
> 1692 ? Ss 0:00 \_ /sbin/acpid
> 1923 ? Ss 0:00 \_ /sbin/resmgrd
...
> - if(self_pid==1 && ADOPTED(processes[i]) && forest_type!='u')
> + if(ADOPTED(processes[i]) && forest_type!='u')

That's not compatible because init's children are now in the
logical place. Since the days of procps-1.x.x or earlier,
such processes have been listed at top level.

BTW, what does "ps -ejH" do for you, with and without the patch?

I'd be a lot happier about breaking compatibility in this area
if I could get a functional adoption flag. That is, I really
would like to show a process as child of init if it naturally
was created as a child of init. It's less informative to have
fake children showing up the same as real ones. The original
parent PID would do. (BTW, the original parent name and/or
grandparent PID would be great to have) As a bonus, the kernel
could reap these processes more quickly than init can... and
then maybe we can stop caring if init is alive.