diff options
Diffstat (limited to 'mm/page_alloc.c')
| -rw-r--r-- | mm/page_alloc.c | 10 | 
1 files changed, 7 insertions, 3 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index d052abbe306..a0de15f4698 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -817,13 +817,15 @@ __rmqueue_fallback(struct zone *zone, int order, int start_migratetype)  			 * agressive about taking ownership of free pages  			 */  			if (unlikely(current_order >= (pageblock_order >> 1)) || -					start_migratetype == MIGRATE_RECLAIMABLE) { +					start_migratetype == MIGRATE_RECLAIMABLE || +					page_group_by_mobility_disabled) {  				unsigned long pages;  				pages = move_freepages_block(zone, page,  								start_migratetype);  				/* Claim the whole block if over half of it is free */ -				if (pages >= (1 << (pageblock_order-1))) +				if (pages >= (1 << (pageblock_order-1)) || +						page_group_by_mobility_disabled)  					set_pageblock_migratetype(page,  								start_migratetype); @@ -2544,7 +2546,6 @@ static void build_zonelists(pg_data_t *pgdat)  	prev_node = local_node;  	nodes_clear(used_mask); -	memset(node_load, 0, sizeof(node_load));  	memset(node_order, 0, sizeof(node_order));  	j = 0; @@ -2653,6 +2654,9 @@ static int __build_all_zonelists(void *dummy)  {  	int nid; +#ifdef CONFIG_NUMA +	memset(node_load, 0, sizeof(node_load)); +#endif  	for_each_online_node(nid) {  		pg_data_t *pgdat = NODE_DATA(nid);  | 
