|
@@ -2327,7 +2327,7 @@ struct page *grab_cache_page_write_begin(struct address_space *mapping,
|
|
repeat:
|
|
repeat:
|
|
page = find_lock_page(mapping, index);
|
|
page = find_lock_page(mapping, index);
|
|
if (page)
|
|
if (page)
|
|
- return page;
|
|
|
|
|
|
+ goto found;
|
|
|
|
|
|
page = __page_cache_alloc(mapping_gfp_mask(mapping) & ~gfp_notmask);
|
|
page = __page_cache_alloc(mapping_gfp_mask(mapping) & ~gfp_notmask);
|
|
if (!page)
|
|
if (!page)
|
|
@@ -2340,6 +2340,8 @@ repeat:
|
|
goto repeat;
|
|
goto repeat;
|
|
return NULL;
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
+found:
|
|
|
|
+ wait_on_page_writeback(page);
|
|
return page;
|
|
return page;
|
|
}
|
|
}
|
|
EXPORT_SYMBOL(grab_cache_page_write_begin);
|
|
EXPORT_SYMBOL(grab_cache_page_write_begin);
|