diff options
-rw-r--r-- | mm/filemap.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/mm/filemap.c b/mm/filemap.c index a0701e6eec10..c4ee2e918bea 100644 --- a/mm/filemap.c +++ b/mm/filemap.c | |||
@@ -2351,8 +2351,11 @@ struct page *grab_cache_page_write_begin(struct address_space *mapping, | |||
2351 | pgoff_t index, unsigned flags) | 2351 | pgoff_t index, unsigned flags) |
2352 | { | 2352 | { |
2353 | int status; | 2353 | int status; |
2354 | gfp_t gfp_mask; | ||
2354 | struct page *page; | 2355 | struct page *page; |
2355 | gfp_t gfp_notmask = 0; | 2356 | gfp_t gfp_notmask = 0; |
2357 | |||
2358 | gfp_mask = mapping_gfp_mask(mapping) | __GFP_WRITE; | ||
2356 | if (flags & AOP_FLAG_NOFS) | 2359 | if (flags & AOP_FLAG_NOFS) |
2357 | gfp_notmask = __GFP_FS; | 2360 | gfp_notmask = __GFP_FS; |
2358 | repeat: | 2361 | repeat: |
@@ -2360,7 +2363,7 @@ repeat: | |||
2360 | if (page) | 2363 | if (page) |
2361 | goto found; | 2364 | goto found; |
2362 | 2365 | ||
2363 | page = __page_cache_alloc(mapping_gfp_mask(mapping) & ~gfp_notmask); | 2366 | page = __page_cache_alloc(gfp_mask & ~gfp_notmask); |
2364 | if (!page) | 2367 | if (!page) |
2365 | return NULL; | 2368 | return NULL; |
2366 | status = add_to_page_cache_lru(page, mapping, index, | 2369 | status = add_to_page_cache_lru(page, mapping, index, |