diff options
author | Tejun Heo <tj@kernel.org> | 2014-02-25 10:04:02 -0500 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2014-02-25 10:04:02 -0500 |
commit | ceb6a081f6f52d17ec9e46e271cc26a1eb8a7573 (patch) | |
tree | 100b59acde1d14b2995b0a399ff53e1ea6c571ed /kernel/cgroup.c | |
parent | b3dc094e93905ae9c1bc0815402ad8e5b203d068 (diff) | |
download | linux-ceb6a081f6f52d17ec9e46e271cc26a1eb8a7573.tar.bz2 |
cgroup: separate out cset_group_from_root() from task_cgroup_from_root()
This will be used by the planned migration path update.
Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Li Zefan <lizefan@huawei.com>
Diffstat (limited to 'kernel/cgroup.c')
-rw-r--r-- | kernel/cgroup.c | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/kernel/cgroup.c b/kernel/cgroup.c index 5def4a800425..23e3a8c74bd4 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c @@ -758,25 +758,15 @@ static void cgroup_destroy_root(struct cgroupfs_root *root) cgroup_free_root(root); } -/* - * Return the cgroup for "task" from the given hierarchy. Must be - * called with cgroup_mutex and css_set_rwsem held. - */ -static struct cgroup *task_cgroup_from_root(struct task_struct *task, +/* look up cgroup associated with given css_set on the specified hierarchy */ +static struct cgroup *cset_cgroup_from_root(struct css_set *cset, struct cgroupfs_root *root) { - struct css_set *cset; struct cgroup *res = NULL; lockdep_assert_held(&cgroup_mutex); lockdep_assert_held(&css_set_rwsem); - /* - * No need to lock the task - since we hold cgroup_mutex the - * task can't change groups, so the only thing that can happen - * is that it exits and its css is set back to init_css_set. - */ - cset = task_css_set(task); if (cset == &init_css_set) { res = &root->top_cgroup; } else { @@ -797,6 +787,21 @@ static struct cgroup *task_cgroup_from_root(struct task_struct *task, } /* + * Return the cgroup for "task" from the given hierarchy. Must be + * called with cgroup_mutex and css_set_rwsem held. + */ +static struct cgroup *task_cgroup_from_root(struct task_struct *task, + struct cgroupfs_root *root) +{ + /* + * No need to lock the task - since we hold cgroup_mutex the + * task can't change groups, so the only thing that can happen + * is that it exits and its css is set back to init_css_set. + */ + return cset_cgroup_from_root(task_css_set(task), root); +} + +/* * There is one global cgroup mutex. We also require taking * task_lock() when dereferencing a task's cgroup subsys pointers. * See "The task_lock() exception", at the end of this comment. |