diff options
Diffstat (limited to 'mm/page_alloc.c')
| -rw-r--r-- | mm/page_alloc.c | 7 | 
1 files changed, 4 insertions, 3 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index bcb72c6e2b2..92871579cbe 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -2416,8 +2416,9 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,  		goto nopage;  restart: -	wake_all_kswapd(order, zonelist, high_zoneidx, -					zone_idx(preferred_zone)); +	if (!(gfp_mask & __GFP_NO_KSWAPD)) +		wake_all_kswapd(order, zonelist, high_zoneidx, +						zone_idx(preferred_zone));  	/*  	 * OK, we're below the kswapd watermark and have kicked background @@ -2494,7 +2495,7 @@ rebalance:  	 * system then fail the allocation instead of entering direct reclaim.  	 */  	if ((deferred_compaction || contended_compaction) && -	    (gfp_mask & (__GFP_MOVABLE|__GFP_REPEAT)) == __GFP_MOVABLE) +						(gfp_mask & __GFP_NO_KSWAPD))  		goto nopage;  	/* Try direct reclaim and then allocating */  |