aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrea Arcangeli <aarcange@redhat.com>2011-01-13 18:46:49 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2011-01-13 20:32:42 -0500
commit5c3240d92e29ae7bfb9cb58a9b37e80ab40894ff (patch)
treefffa9f90492b61ef1578e1c41118024c81d77863
parent32dba98e085f8b2b4345887df9abf5e0e93bfc12 (diff)
thp: don't alloc harder for gfp nomemalloc even if nowait
Not worth throwing away the precious reserved free memory pool for allocations that can fail gracefully (either through mempool or because they're transhuge allocations later falling back to 4k allocations). Signed-off-by: Andrea Arcangeli <aarcange@redhat.com> Acked-by: Rik van Riel <riel@redhat.com> Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Acked-by: Mel Gorman <mel@csn.ul.ie> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--mm/page_alloc.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index bbd0423f2820..e7664b9f706c 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -1971,7 +1971,12 @@ gfp_to_alloc_flags(gfp_t gfp_mask)
1971 alloc_flags |= (__force int) (gfp_mask & __GFP_HIGH); 1971 alloc_flags |= (__force int) (gfp_mask & __GFP_HIGH);
1972 1972
1973 if (!wait) { 1973 if (!wait) {
1974 alloc_flags |= ALLOC_HARDER; 1974 /*
1975 * Not worth trying to allocate harder for
1976 * __GFP_NOMEMALLOC even if it can't schedule.
1977 */
1978 if (!(gfp_mask & __GFP_NOMEMALLOC))
1979 alloc_flags |= ALLOC_HARDER;
1975 /* 1980 /*
1976 * Ignore cpuset if GFP_ATOMIC (!wait) rather than fail alloc. 1981 * Ignore cpuset if GFP_ATOMIC (!wait) rather than fail alloc.
1977 * See also cpuset_zone_allowed() comment in kernel/cpuset.c. 1982 * See also cpuset_zone_allowed() comment in kernel/cpuset.c.