diff options
author | Steven Whitehouse <swhiteho@redhat.com> | 2006-03-20 12:47:40 -0500 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2006-03-20 12:47:40 -0500 |
commit | 9a21247181d93fdf99255911845ecdb041d21583 (patch) | |
tree | 6d69be36f8a2bd8c76bf02ead2f0121a511c0a92 /mm/page_alloc.c | |
parent | c752666c17f870fa8ae9f16804dd457e9e6daaec (diff) | |
parent | 7705a8792b0fc82fd7d4dd923724606bbfd9fb20 (diff) | |
download | op-kernel-dev-9a21247181d93fdf99255911845ecdb041d21583.zip op-kernel-dev-9a21247181d93fdf99255911845ecdb041d21583.tar.gz |
Merge branch 'master'
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r-- | mm/page_alloc.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 791690d..234bd48 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -590,21 +590,20 @@ static int rmqueue_bulk(struct zone *zone, unsigned int order, } #ifdef CONFIG_NUMA -/* Called from the slab reaper to drain remote pagesets */ -void drain_remote_pages(void) +/* + * Called from the slab reaper to drain pagesets on a particular node that + * belong to the currently executing processor. + */ +void drain_node_pages(int nodeid) { - struct zone *zone; - int i; + int i, z; unsigned long flags; local_irq_save(flags); - for_each_zone(zone) { + for (z = 0; z < MAX_NR_ZONES; z++) { + struct zone *zone = NODE_DATA(nodeid)->node_zones + z; struct per_cpu_pageset *pset; - /* Do not drain local pagesets */ - if (zone->zone_pgdat->node_id == numa_node_id()) - continue; - pset = zone_pcp(zone, smp_processor_id()); for (i = 0; i < ARRAY_SIZE(pset->pcp); i++) { struct per_cpu_pages *pcp; |