From: Pavel Emelyanov Date: Fri, 19 Oct 2007 06:40:04 +0000 (-0700) Subject: pid namespaces: add support for pid namespaces hierarchy X-Git-Tag: v2.6.24-rc1~221 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=faacbfd3a6808bf87d8f353b42eceeaba2c78a47;p=linux-2.6 pid namespaces: add support for pid namespaces hierarchy Each namespace has a parent and is characterized by its "level". Level is the number of the namespace generation. E.g. init namespace has level 0, after cloning new one it will have level 1, the next one - 2 and so on and so forth. This level is not explicitly limited. True hierarchy must have some way to find each namespace's children, but it is not used in the patches, so this ability is not added (yet). Signed-off-by: Pavel Emelyanov Cc: Oleg Nesterov Cc: Sukadev Bhattiprolu Cc: Paul Menage Cc: "Eric W. Biederman" Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/include/linux/pid_namespace.h b/include/linux/pid_namespace.h index aea13ec31a..14376ebf4b 100644 --- a/include/linux/pid_namespace.h +++ b/include/linux/pid_namespace.h @@ -21,6 +21,8 @@ struct pid_namespace { int last_pid; struct task_struct *child_reaper; struct kmem_cache *pid_cachep; + int level; + struct pid_namespace *parent; }; extern struct pid_namespace init_pid_ns; diff --git a/kernel/pid.c b/kernel/pid.c index bb0785109d..c7346fb801 100644 --- a/kernel/pid.c +++ b/kernel/pid.c @@ -67,7 +67,8 @@ struct pid_namespace init_pid_ns = { [ 0 ... PIDMAP_ENTRIES-1] = { ATOMIC_INIT(BITS_PER_PAGE), NULL } }, .last_pid = 0, - .child_reaper = &init_task + .level = 0, + .child_reaper = &init_task, }; int is_global_init(struct task_struct *tsk)