|
@@ -2015,16 +2015,35 @@ static void cpuset_css_free(struct cgroup_subsys_state *css)
|
|
|
kfree(cs);
|
|
|
}
|
|
|
|
|
|
+static void cpuset_bind(struct cgroup_subsys_state *root_css)
|
|
|
+{
|
|
|
+ mutex_lock(&cpuset_mutex);
|
|
|
+ mutex_lock(&callback_mutex);
|
|
|
+
|
|
|
+ if (cgroup_on_dfl(root_css->cgroup)) {
|
|
|
+ cpumask_copy(top_cpuset.cpus_allowed, cpu_possible_mask);
|
|
|
+ top_cpuset.mems_allowed = node_possible_map;
|
|
|
+ } else {
|
|
|
+ cpumask_copy(top_cpuset.cpus_allowed,
|
|
|
+ top_cpuset.effective_cpus);
|
|
|
+ top_cpuset.mems_allowed = top_cpuset.effective_mems;
|
|
|
+ }
|
|
|
+
|
|
|
+ mutex_unlock(&callback_mutex);
|
|
|
+ mutex_unlock(&cpuset_mutex);
|
|
|
+}
|
|
|
+
|
|
|
struct cgroup_subsys cpuset_cgrp_subsys = {
|
|
|
- .css_alloc = cpuset_css_alloc,
|
|
|
- .css_online = cpuset_css_online,
|
|
|
- .css_offline = cpuset_css_offline,
|
|
|
- .css_free = cpuset_css_free,
|
|
|
- .can_attach = cpuset_can_attach,
|
|
|
- .cancel_attach = cpuset_cancel_attach,
|
|
|
- .attach = cpuset_attach,
|
|
|
- .base_cftypes = files,
|
|
|
- .early_init = 1,
|
|
|
+ .css_alloc = cpuset_css_alloc,
|
|
|
+ .css_online = cpuset_css_online,
|
|
|
+ .css_offline = cpuset_css_offline,
|
|
|
+ .css_free = cpuset_css_free,
|
|
|
+ .can_attach = cpuset_can_attach,
|
|
|
+ .cancel_attach = cpuset_cancel_attach,
|
|
|
+ .attach = cpuset_attach,
|
|
|
+ .bind = cpuset_bind,
|
|
|
+ .base_cftypes = files,
|
|
|
+ .early_init = 1,
|
|
|
};
|
|
|
|
|
|
/**
|