diff --git a/[refs] b/[refs] index 1e88786706e9..6c2c48930f26 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 98702467f829177b3993f17da9fe5c202d160e5e +refs/heads/master: 3d08bcc887a1c8d12be8d81f747ffa2e8a44b67b diff --git a/trunk/mm/filemap.c b/trunk/mm/filemap.c index bcdc393b6580..dac95a24deac 100644 --- a/trunk/mm/filemap.c +++ b/trunk/mm/filemap.c @@ -2327,7 +2327,7 @@ struct page *grab_cache_page_write_begin(struct address_space *mapping, repeat: page = find_lock_page(mapping, index); if (page) - return page; + goto found; page = __page_cache_alloc(mapping_gfp_mask(mapping) & ~gfp_notmask); if (!page) @@ -2340,6 +2340,8 @@ struct page *grab_cache_page_write_begin(struct address_space *mapping, goto repeat; return NULL; } +found: + wait_on_page_writeback(page); return page; } EXPORT_SYMBOL(grab_cache_page_write_begin);