aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFengguang Wu <[email protected]>2012-03-21 16:34:08 -0700
committerLinus Torvalds <[email protected]>2012-03-21 17:54:58 -0700
commit1010bb1b80edb0713415dfe1f97114d320f58c4f (patch)
tree70aeaba13b61aa442e0c48c99a1035e204910982
parenta05b0855fd15504972dba2358e5faa172a1e50ba (diff)
mm: don't set __GFP_WRITE on ramfs/sysfs writes
There is not much point in skipping zones during allocation based on the dirty usage which they'll never contribute to. And we'd like to avoid page reclaim waits when writing to ramfs/sysfs etc. Signed-off-by: Fengguang Wu <[email protected]> Acked-by: Johannes Weiner <[email protected]> Cc: Jan Kara <[email protected]> Cc: Greg Thelen <[email protected]> Cc: Ying Han <[email protected]> Cc: KAMEZAWA Hiroyuki <[email protected]> Cc: Rik van Riel <[email protected]> Cc: Mel Gorman <[email protected]> Acked-by: Minchan Kim <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
-rw-r--r--mm/filemap.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/mm/filemap.c b/mm/filemap.c
index 2f8165075a5a..e8cf8aefd6f6 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -2341,7 +2341,9 @@ struct page *grab_cache_page_write_begin(struct address_space *mapping,
struct page *page;
gfp_t gfp_notmask = 0;
- gfp_mask = mapping_gfp_mask(mapping) | __GFP_WRITE;
+ gfp_mask = mapping_gfp_mask(mapping);
+ if (mapping_cap_account_dirty(mapping))
+ gfp_mask |= __GFP_WRITE;
if (flags & AOP_FLAG_NOFS)
gfp_notmask = __GFP_FS;
repeat: