diff options
author | Jeff Garzik <jeff@garzik.org> | 2006-03-11 21:35:31 +0300 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2006-03-11 21:35:31 +0300 |
commit | 749dfc70554f2c9e6624ac843d66571265ed9338 (patch) | |
tree | bf591255b3f158222f90852d53c4279e6e7e9ced /mm/page_alloc.c | |
parent | 74f5ec29ae93aa42c49f4285c20c457afe937881 (diff) | |
parent | 0992a5d029181421877a716eaf99145828ff7eae (diff) | |
download | linux-749dfc70554f2c9e6624ac843d66571265ed9338.tar.xz |
Merge branch 'upstream-fixes'
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 791690d7d3fa..234bd4895d14 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; |