cgroup: add cgroup_subsys_state->parent
authorTejun Heo <tj@kernel.org>
Tue, 13 Aug 2013 15:01:54 +0000 (11:01 -0400)
committerTejun Heo <tj@kernel.org>
Tue, 13 Aug 2013 15:01:54 +0000 (11:01 -0400)
commit0ae78e0bf10ac38ab53548e18383afc9997eca22
tree8f3e828b1751966af779becd60a0ff432cfefc8d
parent35ef10da65d43211f4cd7e7822cbb3becdfc0ae1
cgroup: add cgroup_subsys_state->parent

With the planned unified hierarchy, css's (cgroup_subsys_state) will
be RCU protected and allowed to be attached and detached dynamically
over the course of a cgroup's lifetime.  This means that css's will
stay accessible after being detached from its cgroup - the matching
pointer in cgroup->subsys[] cleared - for ref draining and RCU grace
period.

cgroup core still wants to guarantee that the parent css is never
destroyed before its children and css_parent() always returns the
parent regardless of the state of the child css as long as it's
accessible.

This patch makes css's hold onto their parents and adds css->parent so
that the parent css is never detroyed before its children and can be
determined without consulting the cgroups.

cgroup->dummy_css is also updated to point to the parent dummy_css;
however, it doesn't need to worry about object lifetime as the parent
cgroup is already pinned by the child.

Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Li Zefan <lizefan@huawei.com>
include/linux/cgroup.h
kernel/cgroup.c