mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 13:11:40 +00:00
cgroup: move number_of_cgroups test out of rebind_subsystems() into cgroup_remount()
rebind_subsystems() currently fails if the hierarchy has any !root cgroups; however, on the planned unified hierarchy, rebind_subsystems() will be used while populated. Move the test to cgroup_remount(), which is the only place the test is necessary anyway. As it's impossible for the other two callers of rebind_subsystems() to have populated hierarchy, this doesn't make any behavior changes. Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: Li Zefan <lizefan@huawei.com>
This commit is contained in:
parent
3126121fb3
commit
f172e67cf9
@ -1021,13 +1021,6 @@ static int rebind_subsystems(struct cgroupfs_root *root,
|
||||
}
|
||||
}
|
||||
|
||||
/* Currently we don't handle adding/removing subsystems when
|
||||
* any child cgroups exist. This is theoretically supportable
|
||||
* but involves complex error handling, so it's being left until
|
||||
* later */
|
||||
if (root->number_of_cgroups > 1)
|
||||
return -EBUSY;
|
||||
|
||||
ret = cgroup_populate_dir(cgrp, added_mask);
|
||||
if (ret)
|
||||
return ret;
|
||||
@ -1373,6 +1366,12 @@ static int cgroup_remount(struct super_block *sb, int *flags, char *data)
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
/* remounting is not allowed for populated hierarchies */
|
||||
if (root->number_of_cgroups > 1) {
|
||||
ret = -EBUSY;
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
ret = rebind_subsystems(root, added_mask, removed_mask);
|
||||
if (ret)
|
||||
goto out_unlock;
|
||||
|
Loading…
Reference in New Issue
Block a user