diff options
Diffstat (limited to 'mm')
-rw-r--r-- | mm/filemap.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/mm/filemap.c b/mm/filemap.c index bcdc393b6580..dac95a24deac 100644 --- a/mm/filemap.c +++ b/mm/filemap.c | |||
@@ -2327,7 +2327,7 @@ struct page *grab_cache_page_write_begin(struct address_space *mapping, | |||
2327 | repeat: | 2327 | repeat: |
2328 | page = find_lock_page(mapping, index); | 2328 | page = find_lock_page(mapping, index); |
2329 | if (page) | 2329 | if (page) |
2330 | return page; | 2330 | goto found; |
2331 | 2331 | ||
2332 | page = __page_cache_alloc(mapping_gfp_mask(mapping) & ~gfp_notmask); | 2332 | page = __page_cache_alloc(mapping_gfp_mask(mapping) & ~gfp_notmask); |
2333 | if (!page) | 2333 | if (!page) |
@@ -2340,6 +2340,8 @@ repeat: | |||
2340 | goto repeat; | 2340 | goto repeat; |
2341 | return NULL; | 2341 | return NULL; |
2342 | } | 2342 | } |
2343 | found: | ||
2344 | wait_on_page_writeback(page); | ||
2343 | return page; | 2345 | return page; |
2344 | } | 2346 | } |
2345 | EXPORT_SYMBOL(grab_cache_page_write_begin); | 2347 | EXPORT_SYMBOL(grab_cache_page_write_begin); |