提交 3d08bcc8 编写于 作者: D Darrick J. Wong 提交者: Al Viro

mm: Wait for writeback when grabbing pages to begin a write

When grabbing a page for a buffered IO write, the mm should wait for writeback
on the page to complete so that the page does not become writable during the IO
operation.  This change is needed to provide page stability during writes for
all filesystems.
Signed-off-by: NDarrick J. Wong <djwong@us.ibm.com>
Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
上级 98702467
...@@ -2327,7 +2327,7 @@ struct page *grab_cache_page_write_begin(struct address_space *mapping, ...@@ -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 @@ struct page *grab_cache_page_write_begin(struct address_space *mapping, ...@@ -2340,6 +2340,8 @@ struct page *grab_cache_page_write_begin(struct address_space *mapping,
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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册