diff options
| -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 bcdc393b658..dac95a24dea 100644 --- a/mm/filemap.c +++ b/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 @@ repeat:  			goto repeat;  		return NULL;  	} +found: +	wait_on_page_writeback(page);  	return page;  }  EXPORT_SYMBOL(grab_cache_page_write_begin);  |