The patch titled writeback: make nr_to_write a per-file limit has been removed from the -mm tree. Its filename was writeback-make-nr_to_write-a-per-file-limit.patch This patch was dropped because an updated version will be merged The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/ ------------------------------------------------------ Subject: writeback: make nr_to_write a per-file limit From: Wu Fengguang <fengguang.wu@xxxxxxxxx> This ensures full 4MB (or larger) writeback size for large dirty files. [akpm@xxxxxxxxxxxxxxxxxxxx: fix used-uninitialised warning] Signed-off-by: Wu Fengguang <fengguang.wu@xxxxxxxxx> Cc: Chris Mason <chris.mason@xxxxxxxxxx> Cc: Dave Chinner <david@xxxxxxxxxxxxx> Cc: Jan Kara <jack@xxxxxxx> Cc: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx> Cc: Jens Axboe <axboe@xxxxxxxxx> Cc: Jan Kara <jack@xxxxxxx> Cc: KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxxxxxxx> Cc: Li Shaohua <shaohua.li@xxxxxxxxx> Cc: Theodore Ts'o <tytso@xxxxxxx> Cc: Richard Kennedy <richard@xxxxxxxxxxxxxxx> Cc: Christoph Hellwig <hch@xxxxxx> Cc: Mel Gorman <mel@xxxxxxxxx> Cc: Rik van Riel <riel@xxxxxxxxxx> Cc: Michael Rubin <mrubin@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- fs/fs-writeback.c | 11 +++++++++++ include/linux/writeback.h | 1 + 2 files changed, 12 insertions(+) diff -puN fs/fs-writeback.c~writeback-make-nr_to_write-a-per-file-limit fs/fs-writeback.c --- a/fs/fs-writeback.c~writeback-make-nr_to_write-a-per-file-limit +++ a/fs/fs-writeback.c @@ -330,6 +330,8 @@ static int writeback_single_inode(struct inode *inode, struct writeback_control *wbc) { struct address_space *mapping = inode->i_mapping; + long per_file_limit = wbc->per_file_limit; + long uninitialized_var(nr_to_write); unsigned dirty; int ret; @@ -365,8 +367,16 @@ writeback_single_inode(struct inode *ino inode->i_state &= ~I_DIRTY_PAGES; spin_unlock(&inode_lock); + if (per_file_limit) { + nr_to_write = wbc->nr_to_write; + wbc->nr_to_write = per_file_limit; + } + ret = do_writepages(mapping, wbc); + if (per_file_limit) + wbc->nr_to_write += nr_to_write - per_file_limit; + /* * Make sure to wait on the data before writing out the metadata. * This is important for filesystems that modify metadata on data @@ -698,6 +708,7 @@ static long wb_writeback(struct bdi_writ wbc.more_io = 0; wbc.nr_to_write = write_chunk; + wbc.per_file_limit = write_chunk; wbc.pages_skipped = 0; trace_wbc_writeback_start(&wbc, wb->bdi); diff -puN include/linux/writeback.h~writeback-make-nr_to_write-a-per-file-limit include/linux/writeback.h --- a/include/linux/writeback.h~writeback-make-nr_to_write-a-per-file-limit +++ a/include/linux/writeback.h @@ -43,6 +43,7 @@ struct writeback_control { extra jobs and livelock */ long nr_to_write; /* Write this many pages, and decrement this for each page written */ + long per_file_limit; /* Write this many pages for one file */ long pages_skipped; /* Pages which were not written */ /* _ Patches currently in -mm which might be from fengguang.wu@xxxxxxxxx are origin.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html