fs, proc: introduce /proc/<pid>/task/<tid>/children entry
When we do checkpoint of a task we need to know the list of children the task, has but there is no easy and fast way to generate reverse parent->children chain from arbitrary <pid> (while a parent pid is provided in "PPid" field of /proc/<pid>/status). So instead of walking over all pids in the system (creating one big process tree in memory, just to figure out which children a task has) -- we add explicit /proc/<pid>/task/<tid>/children entry, because the kernel already has this kind of information but it is not yet exported. This is a first level children, not the whole process tree. Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org> Reviewed-by: Oleg Nesterov <oleg@redhat.com> Reviewed-by: Kees Cook <keescook@chromium.org> Cc: Pavel Emelyanov <xemul@parallels.com> Cc: Serge Hallyn <serge.hallyn@canonical.com> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
此提交包含在:
@@ -40,6 +40,7 @@ Table of Contents
|
||||
3.4 /proc/<pid>/coredump_filter - Core dump filtering settings
|
||||
3.5 /proc/<pid>/mountinfo - Information about mounts
|
||||
3.6 /proc/<pid>/comm & /proc/<pid>/task/<tid>/comm
|
||||
3.7 /proc/<pid>/task/<tid>/children - Information about task children
|
||||
|
||||
4 Configuring procfs
|
||||
4.1 Mount options
|
||||
@@ -1578,6 +1579,23 @@ then the kernel's TASK_COMM_LEN (currently 16 chars) will result in a truncated
|
||||
comm value.
|
||||
|
||||
|
||||
3.7 /proc/<pid>/task/<tid>/children - Information about task children
|
||||
-------------------------------------------------------------------------
|
||||
This file provides a fast way to retrieve first level children pids
|
||||
of a task pointed by <pid>/<tid> pair. The format is a space separated
|
||||
stream of pids.
|
||||
|
||||
Note the "first level" here -- if a child has own children they will
|
||||
not be listed here, one needs to read /proc/<children-pid>/task/<tid>/children
|
||||
to obtain the descendants.
|
||||
|
||||
Since this interface is intended to be fast and cheap it doesn't
|
||||
guarantee to provide precise results and some children might be
|
||||
skipped, especially if they've exited right after we printed their
|
||||
pids, so one need to either stop or freeze processes being inspected
|
||||
if precise results are needed.
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
Configuring procfs
|
||||
------------------------------------------------------------------------------
|
||||
|
新增問題並參考
封鎖使用者