aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/cpuset.c
diff options
context:
space:
mode:
authorLi Zefan <lizefan@huawei.com>2014-07-09 04:48:01 -0400
committerTejun Heo <tj@kernel.org>2014-07-09 15:56:17 -0400
commit39bd0d15eca5af15ee1492964f317ecdb024a9d6 (patch)
tree243ed22f95b40f48faa3e14c7fe9bcaf69e3e8ff /kernel/cpuset.c
parent8b5f1c52dcd1accd3a940cfcb148bef6de589524 (diff)
cpuset: initialize top_cpuset's configured masks at mount
We now have to support different behaviors for default hierachy and legacy hiearchy, top_cpuset's configured masks need to be initialized accordingly. Suppose we've offlined cpu1. On default hierarchy: # mount -t cgroup -o __DEVEL__sane_behavior xxx /cpuset # cat /cpuset/cpuset.cpus 0-15 On legacy hierarchy: # mount -t cgroup xxx /cpuset # cat /cpuset/cpuset.cpus 0,2-15 Signed-off-by: Li Zefan <lizefan@huawei.com> Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'kernel/cpuset.c')
-rw-r--r--kernel/cpuset.c37
1 files changed, 28 insertions, 9 deletions
diff --git a/kernel/cpuset.c b/kernel/cpuset.c
index 60577ccdbfc7..e4c31e6b8716 100644
--- a/kernel/cpuset.c
+++ b/kernel/cpuset.c
@@ -2015,16 +2015,35 @@ static void cpuset_css_free(struct cgroup_subsys_state *css)
2015 kfree(cs); 2015 kfree(cs);
2016} 2016}
2017 2017
2018static void cpuset_bind(struct cgroup_subsys_state *root_css)
2019{
2020 mutex_lock(&cpuset_mutex);
2021 mutex_lock(&callback_mutex);
2022
2023 if (cgroup_on_dfl(root_css->cgroup)) {
2024 cpumask_copy(top_cpuset.cpus_allowed, cpu_possible_mask);
2025 top_cpuset.mems_allowed = node_possible_map;
2026 } else {
2027 cpumask_copy(top_cpuset.cpus_allowed,
2028 top_cpuset.effective_cpus);
2029 top_cpuset.mems_allowed = top_cpuset.effective_mems;
2030 }
2031
2032 mutex_unlock(&callback_mutex);
2033 mutex_unlock(&cpuset_mutex);
2034}
2035
2018struct cgroup_subsys cpuset_cgrp_subsys = { 2036struct cgroup_subsys cpuset_cgrp_subsys = {
2019 .css_alloc = cpuset_css_alloc, 2037 .css_alloc = cpuset_css_alloc,
2020 .css_online = cpuset_css_online, 2038 .css_online = cpuset_css_online,
2021 .css_offline = cpuset_css_offline, 2039 .css_offline = cpuset_css_offline,
2022 .css_free = cpuset_css_free, 2040 .css_free = cpuset_css_free,
2023 .can_attach = cpuset_can_attach, 2041 .can_attach = cpuset_can_attach,
2024 .cancel_attach = cpuset_cancel_attach, 2042 .cancel_attach = cpuset_cancel_attach,
2025 .attach = cpuset_attach, 2043 .attach = cpuset_attach,
2026 .base_cftypes = files, 2044 .bind = cpuset_bind,
2027 .early_init = 1, 2045 .base_cftypes = files,
2046 .early_init = 1,
2028}; 2047};
2029 2048
2030/** 2049/**