writeback: prevent duplicate balance_dirty_pages_ratelimited() calls
Subsystems (3)
PATCH 4/13 writeback: prevent duplicate balance_dirty_pages_ratelimited() calls
Andrew,
References: <[email protected]>
Content-Disposition: inline; filename=writeback-fix-duplicate-bdp-calls.patch
When dd in 512bytes, balance_dirty_pages_ratelimited() used to be called 8 times for the same page, even if the page is only dirtied once. Fix it with a (slightly racy) PageDirty() test.
Signed-off-by Wu Fengguang <[email protected]>
--- mm/filemap.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
mm/filemap.c +4 -1
@@ -2258,6 +2258,7 @@ static ssize_t generic_perform_write(strlong status =0 ;ssize_t written =0 ;unsigned int flags =0 ; +unsigned int dirty;/* * Copies from kernel address space cannot fail (NFSD is a big user).
@@ -2306,6 +2307,7 @@ again:pagefault_enable ();flush_dcache_page (page); + dirty =PageDirty (page);mark_page_accessed (page); status = a_ops->write_end (file, mapping, pos, bytes, copied, page, fsdata);
@@ -2332,7 +2334,8 @@ again: pos += copied; written += copied; -balance_dirty_pages_ratelimited (mapping); +if (!dirty) +balance_dirty_pages_ratelimited (mapping); }while (iov_iter_count (i));
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>