diff options
Diffstat (limited to 'kernel/cpuset.c')
| -rw-r--r-- | kernel/cpuset.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/kernel/cpuset.c b/kernel/cpuset.c index 81fc6791a296..da7ff6137f37 100644 --- a/kernel/cpuset.c +++ b/kernel/cpuset.c | |||
| @@ -36,6 +36,7 @@ | |||
| 36 | #include <linux/list.h> | 36 | #include <linux/list.h> |
| 37 | #include <linux/mempolicy.h> | 37 | #include <linux/mempolicy.h> |
| 38 | #include <linux/mm.h> | 38 | #include <linux/mm.h> |
| 39 | #include <linux/memory.h> | ||
| 39 | #include <linux/module.h> | 40 | #include <linux/module.h> |
| 40 | #include <linux/mount.h> | 41 | #include <linux/mount.h> |
| 41 | #include <linux/namei.h> | 42 | #include <linux/namei.h> |
| @@ -2015,12 +2016,23 @@ static int cpuset_track_online_cpus(struct notifier_block *unused_nb, | |||
| 2015 | * Call this routine anytime after node_states[N_HIGH_MEMORY] changes. | 2016 | * Call this routine anytime after node_states[N_HIGH_MEMORY] changes. |
| 2016 | * See also the previous routine cpuset_track_online_cpus(). | 2017 | * See also the previous routine cpuset_track_online_cpus(). |
| 2017 | */ | 2018 | */ |
| 2018 | void cpuset_track_online_nodes(void) | 2019 | static int cpuset_track_online_nodes(struct notifier_block *self, |
| 2020 | unsigned long action, void *arg) | ||
| 2019 | { | 2021 | { |
| 2020 | cgroup_lock(); | 2022 | cgroup_lock(); |
| 2021 | top_cpuset.mems_allowed = node_states[N_HIGH_MEMORY]; | 2023 | switch (action) { |
| 2022 | scan_for_empty_cpusets(&top_cpuset); | 2024 | case MEM_ONLINE: |
| 2025 | top_cpuset.mems_allowed = node_states[N_HIGH_MEMORY]; | ||
| 2026 | break; | ||
| 2027 | case MEM_OFFLINE: | ||
| 2028 | top_cpuset.mems_allowed = node_states[N_HIGH_MEMORY]; | ||
| 2029 | scan_for_empty_cpusets(&top_cpuset); | ||
| 2030 | break; | ||
| 2031 | default: | ||
| 2032 | break; | ||
| 2033 | } | ||
| 2023 | cgroup_unlock(); | 2034 | cgroup_unlock(); |
| 2035 | return NOTIFY_OK; | ||
| 2024 | } | 2036 | } |
| 2025 | #endif | 2037 | #endif |
| 2026 | 2038 | ||
| @@ -2036,6 +2048,7 @@ void __init cpuset_init_smp(void) | |||
| 2036 | top_cpuset.mems_allowed = node_states[N_HIGH_MEMORY]; | 2048 | top_cpuset.mems_allowed = node_states[N_HIGH_MEMORY]; |
| 2037 | 2049 | ||
| 2038 | hotcpu_notifier(cpuset_track_online_cpus, 0); | 2050 | hotcpu_notifier(cpuset_track_online_cpus, 0); |
| 2051 | hotplug_memory_notifier(cpuset_track_online_nodes, 10); | ||
| 2039 | } | 2052 | } |
| 2040 | 2053 | ||
| 2041 | /** | 2054 | /** |
