cgroup: add cgroup_subsys->post_create()
authorTejun Heo <tj@kernel.org>
Fri, 9 Nov 2012 17:12:29 +0000 (09:12 -0800)
committerTejun Heo <tj@kernel.org>
Fri, 9 Nov 2012 17:12:29 +0000 (09:12 -0800)
commita8638030f668884720b8f4456448d0ce33952b05
tree2532b2ef9def879513fad0e304a6a9c98fa798f0
parent316eb661f125397d46f16f94e3c81ad3dc4c1233
cgroup: add cgroup_subsys->post_create()

Currently, there's no way for a controller to find out whether a new
cgroup finished all ->create() allocatinos successfully and is
considered "live" by cgroup.

This becomes a problem later when we add generic descendants walking
to cgroup which can be used by controllers as controllers don't have a
synchronization point where it can synchronize against new cgroups
appearing in such walks.

This patch adds ->post_create().  It's called after all ->create()
succeeded and the cgroup is linked into the generic cgroup hierarchy.
This plays the counterpart of ->pre_destroy().

When used in combination with the to-be-added generic descendant
iterators, ->post_create() can be used to implement reliable state
inheritance.  It will be explained with the descendant iterators.

v2: Added a paragraph about its future use w/ descendant iterators per
    Michal.

v3: Forgot to add ->post_create() invocation to cgroup_load_subsys().
    Fixed.

Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Michal Hocko <mhocko@suse.cz>
Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Acked-by: Li Zefan <lizefan@huawei.com>
Cc: Glauber Costa <glommer@parallels.com>
include/linux/cgroup.h
kernel/cgroup.c