cgroup: refactor hierarchy_id handling
authorTejun Heo <tj@kernel.org>
Sun, 14 Apr 2013 18:36:56 +0000 (11:36 -0700)
committerTejun Heo <tj@kernel.org>
Tue, 14 May 2013 18:42:05 +0000 (11:42 -0700)
commitfa3ca07e96185aa1496b405472399a2a2a336a17
tree5cd4a902d628f5ce9ee2b0b91d0f435948da4a57
parentf722406faae2d073cc1d01063d1123c35425939e
cgroup: refactor hierarchy_id handling

We're planning to converting hierarchy_ida to an idr and use it to
look up hierarchy from its id.  As we want the mapping to happen
atomically with cgroupfs_root registration, this patch refactors
hierarchy_id init / exit so that ida operations happen inside
cgroup_[root_]mutex.

* s/init_root_id()/cgroup_init_root_id()/ and make it return 0 or
  -errno like a normal function.

* Move hierarchy_id initialization from cgroup_root_from_opts() into
  cgroup_mount() block where the root is confirmed to be used and
  being registered while holding both mutexes.

* Split cgroup_drop_id() into cgroup_exit_root_id() and
  cgroup_free_root(), so that ID release can happen before dropping
  the mutexes in cgroup_kill_sb().  The latter expects hierarchy_id to
  be exited before being invoked.

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