aboutsummaryrefslogtreecommitdiffstats
path: root/mm/page_alloc.c
diff options
context:
space:
mode:
authorMel Gorman <mgorman@suse.de>2014-06-04 19:10:12 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-06-04 19:54:09 -0400
commita6e21b14f22041382e832d30deda6f26f37b1097 (patch)
tree5eee1976cff3a3a07ba0fa625e67bb713b466eb9 /mm/page_alloc.c
parentd34c5fa06fade08a689fc171bf756fba2858ae73 (diff)
mm: page_alloc: only check the alloc flags and gfp_mask for dirty once
Currently it's calculated once per zone in the zonelist. Signed-off-by: Mel Gorman <mgorman@suse.de> Acked-by: Johannes Weiner <hannes@cmpxchg.org> Reviewed-by: Rik van Riel <riel@redhat.com> Cc: Vlastimil Babka <vbabka@suse.cz> Cc: Jan Kara <jack@suse.cz> Cc: Michal Hocko <mhocko@suse.cz> Cc: Hugh Dickins <hughd@google.com> Cc: Dave Hansen <dave.hansen@intel.com> Cc: Theodore Ts'o <tytso@mit.edu> Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> Cc: Oleg Nesterov <oleg@redhat.com> Cc: Peter Zijlstra <peterz@infradead.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r--mm/page_alloc.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index da526905b4a5..30f327a720fd 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -1917,6 +1917,8 @@ get_page_from_freelist(gfp_t gfp_mask, nodemask_t *nodemask, unsigned int order,
1917 nodemask_t *allowednodes = NULL;/* zonelist_cache approximation */ 1917 nodemask_t *allowednodes = NULL;/* zonelist_cache approximation */
1918 int zlc_active = 0; /* set if using zonelist_cache */ 1918 int zlc_active = 0; /* set if using zonelist_cache */
1919 int did_zlc_setup = 0; /* just call zlc_setup() one time */ 1919 int did_zlc_setup = 0; /* just call zlc_setup() one time */
1920 bool consider_zone_dirty = (alloc_flags & ALLOC_WMARK_LOW) &&
1921 (gfp_mask & __GFP_WRITE);
1920 1922
1921 classzone_idx = zone_idx(preferred_zone); 1923 classzone_idx = zone_idx(preferred_zone);
1922zonelist_scan: 1924zonelist_scan:
@@ -1976,8 +1978,7 @@ zonelist_scan:
1976 * will require awareness of zones in the 1978 * will require awareness of zones in the
1977 * dirty-throttling and the flusher threads. 1979 * dirty-throttling and the flusher threads.
1978 */ 1980 */
1979 if ((alloc_flags & ALLOC_WMARK_LOW) && 1981 if (consider_zone_dirty && !zone_dirty_ok(zone))
1980 (gfp_mask & __GFP_WRITE) && !zone_dirty_ok(zone))
1981 continue; 1982 continue;
1982 1983
1983 mark = zone->watermark[alloc_flags & ALLOC_WMARK_MASK]; 1984 mark = zone->watermark[alloc_flags & ALLOC_WMARK_MASK];