dect
/
linux-2.6
Archived
13
0
Fork 0

cpuset: use N_MEMORY instead N_HIGH_MEMORY

N_HIGH_MEMORY stands for the nodes that has normal or high memory.
N_MEMORY stands for the nodes that has any memory.

The code here need to handle with the nodes which have memory, we should
use N_MEMORY instead.

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Acked-by: Hillf Danton <dhillf@gmail.com>
Signed-off-by: Wen Congyang <wency@cn.fujitsu.com>
Cc: Christoph Lameter <cl@linux.com>
Cc: Lin Feng <linfeng@cn.fujitsu.com>
Cc: David Rientjes <rientjes@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Lai Jiangshan 2012-12-12 13:51:24 -08:00 committed by Linus Torvalds
parent 8219fc48ad
commit 38d7bee9d2
3 changed files with 18 additions and 18 deletions

View File

@ -218,7 +218,7 @@ and name space for cpusets, with a minimum of additional kernel code.
The cpus and mems files in the root (top_cpuset) cpuset are The cpus and mems files in the root (top_cpuset) cpuset are
read-only. The cpus file automatically tracks the value of read-only. The cpus file automatically tracks the value of
cpu_online_mask using a CPU hotplug notifier, and the mems file cpu_online_mask using a CPU hotplug notifier, and the mems file
automatically tracks the value of node_states[N_HIGH_MEMORY]--i.e., automatically tracks the value of node_states[N_MEMORY]--i.e.,
nodes with memory--using the cpuset_track_online_nodes() hook. nodes with memory--using the cpuset_track_online_nodes() hook.

View File

@ -144,7 +144,7 @@ static inline nodemask_t cpuset_mems_allowed(struct task_struct *p)
return node_possible_map; return node_possible_map;
} }
#define cpuset_current_mems_allowed (node_states[N_HIGH_MEMORY]) #define cpuset_current_mems_allowed (node_states[N_MEMORY])
static inline void cpuset_init_current_mems_allowed(void) {} static inline void cpuset_init_current_mems_allowed(void) {}
static inline int cpuset_nodemask_valid_mems_allowed(nodemask_t *nodemask) static inline int cpuset_nodemask_valid_mems_allowed(nodemask_t *nodemask)

View File

@ -302,10 +302,10 @@ static void guarantee_online_cpus(const struct cpuset *cs,
* are online, with memory. If none are online with memory, walk * are online, with memory. If none are online with memory, walk
* up the cpuset hierarchy until we find one that does have some * up the cpuset hierarchy until we find one that does have some
* online mems. If we get all the way to the top and still haven't * online mems. If we get all the way to the top and still haven't
* found any online mems, return node_states[N_HIGH_MEMORY]. * found any online mems, return node_states[N_MEMORY].
* *
* One way or another, we guarantee to return some non-empty subset * One way or another, we guarantee to return some non-empty subset
* of node_states[N_HIGH_MEMORY]. * of node_states[N_MEMORY].
* *
* Call with callback_mutex held. * Call with callback_mutex held.
*/ */
@ -313,14 +313,14 @@ static void guarantee_online_cpus(const struct cpuset *cs,
static void guarantee_online_mems(const struct cpuset *cs, nodemask_t *pmask) static void guarantee_online_mems(const struct cpuset *cs, nodemask_t *pmask)
{ {
while (cs && !nodes_intersects(cs->mems_allowed, while (cs && !nodes_intersects(cs->mems_allowed,
node_states[N_HIGH_MEMORY])) node_states[N_MEMORY]))
cs = cs->parent; cs = cs->parent;
if (cs) if (cs)
nodes_and(*pmask, cs->mems_allowed, nodes_and(*pmask, cs->mems_allowed,
node_states[N_HIGH_MEMORY]); node_states[N_MEMORY]);
else else
*pmask = node_states[N_HIGH_MEMORY]; *pmask = node_states[N_MEMORY];
BUG_ON(!nodes_intersects(*pmask, node_states[N_HIGH_MEMORY])); BUG_ON(!nodes_intersects(*pmask, node_states[N_MEMORY]));
} }
/* /*
@ -1100,7 +1100,7 @@ static int update_nodemask(struct cpuset *cs, struct cpuset *trialcs,
return -ENOMEM; return -ENOMEM;
/* /*
* top_cpuset.mems_allowed tracks node_stats[N_HIGH_MEMORY]; * top_cpuset.mems_allowed tracks node_stats[N_MEMORY];
* it's read-only * it's read-only
*/ */
if (cs == &top_cpuset) { if (cs == &top_cpuset) {
@ -1122,7 +1122,7 @@ static int update_nodemask(struct cpuset *cs, struct cpuset *trialcs,
goto done; goto done;
if (!nodes_subset(trialcs->mems_allowed, if (!nodes_subset(trialcs->mems_allowed,
node_states[N_HIGH_MEMORY])) { node_states[N_MEMORY])) {
retval = -EINVAL; retval = -EINVAL;
goto done; goto done;
} }
@ -2026,7 +2026,7 @@ static struct cpuset *cpuset_next(struct list_head *queue)
* before dropping down to the next. It always processes a node before * before dropping down to the next. It always processes a node before
* any of its children. * any of its children.
* *
* In the case of memory hot-unplug, it will remove nodes from N_HIGH_MEMORY * In the case of memory hot-unplug, it will remove nodes from N_MEMORY
* if all present pages from a node are offlined. * if all present pages from a node are offlined.
*/ */
static void static void
@ -2065,7 +2065,7 @@ scan_cpusets_upon_hotplug(struct cpuset *root, enum hotplug_event event)
/* Continue past cpusets with all mems online */ /* Continue past cpusets with all mems online */
if (nodes_subset(cp->mems_allowed, if (nodes_subset(cp->mems_allowed,
node_states[N_HIGH_MEMORY])) node_states[N_MEMORY]))
continue; continue;
oldmems = cp->mems_allowed; oldmems = cp->mems_allowed;
@ -2073,7 +2073,7 @@ scan_cpusets_upon_hotplug(struct cpuset *root, enum hotplug_event event)
/* Remove offline mems from this cpuset. */ /* Remove offline mems from this cpuset. */
mutex_lock(&callback_mutex); mutex_lock(&callback_mutex);
nodes_and(cp->mems_allowed, cp->mems_allowed, nodes_and(cp->mems_allowed, cp->mems_allowed,
node_states[N_HIGH_MEMORY]); node_states[N_MEMORY]);
mutex_unlock(&callback_mutex); mutex_unlock(&callback_mutex);
/* Move tasks from the empty cpuset to a parent */ /* Move tasks from the empty cpuset to a parent */
@ -2126,8 +2126,8 @@ void cpuset_update_active_cpus(bool cpu_online)
#ifdef CONFIG_MEMORY_HOTPLUG #ifdef CONFIG_MEMORY_HOTPLUG
/* /*
* Keep top_cpuset.mems_allowed tracking node_states[N_HIGH_MEMORY]. * Keep top_cpuset.mems_allowed tracking node_states[N_MEMORY].
* Call this routine anytime after node_states[N_HIGH_MEMORY] changes. * Call this routine anytime after node_states[N_MEMORY] changes.
* See cpuset_update_active_cpus() for CPU hotplug handling. * See cpuset_update_active_cpus() for CPU hotplug handling.
*/ */
static int cpuset_track_online_nodes(struct notifier_block *self, static int cpuset_track_online_nodes(struct notifier_block *self,
@ -2140,7 +2140,7 @@ static int cpuset_track_online_nodes(struct notifier_block *self,
case MEM_ONLINE: case MEM_ONLINE:
oldmems = top_cpuset.mems_allowed; oldmems = top_cpuset.mems_allowed;
mutex_lock(&callback_mutex); mutex_lock(&callback_mutex);
top_cpuset.mems_allowed = node_states[N_HIGH_MEMORY]; top_cpuset.mems_allowed = node_states[N_MEMORY];
mutex_unlock(&callback_mutex); mutex_unlock(&callback_mutex);
update_tasks_nodemask(&top_cpuset, &oldmems, NULL); update_tasks_nodemask(&top_cpuset, &oldmems, NULL);
break; break;
@ -2169,7 +2169,7 @@ static int cpuset_track_online_nodes(struct notifier_block *self,
void __init cpuset_init_smp(void) void __init cpuset_init_smp(void)
{ {
cpumask_copy(top_cpuset.cpus_allowed, cpu_active_mask); cpumask_copy(top_cpuset.cpus_allowed, cpu_active_mask);
top_cpuset.mems_allowed = node_states[N_HIGH_MEMORY]; top_cpuset.mems_allowed = node_states[N_MEMORY];
hotplug_memory_notifier(cpuset_track_online_nodes, 10); hotplug_memory_notifier(cpuset_track_online_nodes, 10);
@ -2237,7 +2237,7 @@ void cpuset_init_current_mems_allowed(void)
* *
* Description: Returns the nodemask_t mems_allowed of the cpuset * Description: Returns the nodemask_t mems_allowed of the cpuset
* attached to the specified @tsk. Guaranteed to return some non-empty * attached to the specified @tsk. Guaranteed to return some non-empty
* subset of node_states[N_HIGH_MEMORY], even if this means going outside the * subset of node_states[N_MEMORY], even if this means going outside the
* tasks cpuset. * tasks cpuset.
**/ **/