|
@@ -1151,6 +1151,17 @@ restart:
|
|
if (page)
|
|
if (page)
|
|
goto got_pg;
|
|
goto got_pg;
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
+ * GFP_THISNODE (meaning __GFP_THISNODE, __GFP_NORETRY and
|
|
|
|
+ * __GFP_NOWARN set) should not cause reclaim since the subsystem
|
|
|
|
+ * (f.e. slab) using GFP_THISNODE may choose to trigger reclaim
|
|
|
|
+ * using a larger set of nodes after it has established that the
|
|
|
|
+ * allowed per node queues are empty and that nodes are
|
|
|
|
+ * over allocated.
|
|
|
|
+ */
|
|
|
|
+ if (NUMA_BUILD && (gfp_mask & GFP_THISNODE) == GFP_THISNODE)
|
|
|
|
+ goto nopage;
|
|
|
|
+
|
|
for (z = zonelist->zones; *z; z++)
|
|
for (z = zonelist->zones; *z; z++)
|
|
wakeup_kswapd(*z, order);
|
|
wakeup_kswapd(*z, order);
|
|
|
|
|