diff options
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r-- | mm/page_alloc.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 5d123b399713..dc8753bdd47e 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -1151,6 +1151,17 @@ restart: | |||
1151 | if (page) | 1151 | if (page) |
1152 | goto got_pg; | 1152 | goto got_pg; |
1153 | 1153 | ||
1154 | /* | ||
1155 | * GFP_THISNODE (meaning __GFP_THISNODE, __GFP_NORETRY and | ||
1156 | * __GFP_NOWARN set) should not cause reclaim since the subsystem | ||
1157 | * (f.e. slab) using GFP_THISNODE may choose to trigger reclaim | ||
1158 | * using a larger set of nodes after it has established that the | ||
1159 | * allowed per node queues are empty and that nodes are | ||
1160 | * over allocated. | ||
1161 | */ | ||
1162 | if (NUMA_BUILD && (gfp_mask & GFP_THISNODE) == GFP_THISNODE) | ||
1163 | goto nopage; | ||
1164 | |||
1154 | for (z = zonelist->zones; *z; z++) | 1165 | for (z = zonelist->zones; *z; z++) |
1155 | wakeup_kswapd(*z, order); | 1166 | wakeup_kswapd(*z, order); |
1156 | 1167 | ||