diff options
author | Wu Fengguang <fengguang.wu@intel.com> | 2011-05-04 21:54:37 -0400 |
---|---|---|
committer | Wu Fengguang <fengguang.wu@intel.com> | 2011-07-10 01:09:01 -0400 |
commit | d46db3d58233be4be980eb1e42eebe7808bcabab (patch) | |
tree | 6d813b33938d915f0c0633e8615d1ffdcc554c96 /fs/btrfs/extent_io.c | |
parent | 36715cef0770b7e2547892b7c3197fc024274630 (diff) |
writeback: make writeback_control.nr_to_write straight
Pass struct wb_writeback_work all the way down to writeback_sb_inodes(),
and initialize the struct writeback_control there.
struct writeback_control is basically designed to control writeback of a
single file, but we keep abuse it for writing multiple files in
writeback_sb_inodes() and its callers.
It immediately clean things up, e.g. suddenly wbc.nr_to_write vs
work->nr_pages starts to make sense, and instead of saving and restoring
pages_skipped in writeback_sb_inodes it can always start with a clean
zero value.
It also makes a neat IO pattern change: large dirty files are now
written in the full 4MB writeback chunk size, rather than whatever
remained quota in wbc->nr_to_write.
Acked-by: Jan Kara <jack@suse.cz>
Proposed-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Diffstat (limited to 'fs/btrfs/extent_io.c')
-rw-r--r-- | fs/btrfs/extent_io.c | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c index 7055d11c1efd..561262d35689 100644 --- a/fs/btrfs/extent_io.c +++ b/fs/btrfs/extent_io.c | |||
@@ -2551,7 +2551,6 @@ int extent_write_full_page(struct extent_io_tree *tree, struct page *page, | |||
2551 | }; | 2551 | }; |
2552 | struct writeback_control wbc_writepages = { | 2552 | struct writeback_control wbc_writepages = { |
2553 | .sync_mode = wbc->sync_mode, | 2553 | .sync_mode = wbc->sync_mode, |
2554 | .older_than_this = NULL, | ||
2555 | .nr_to_write = 64, | 2554 | .nr_to_write = 64, |
2556 | .range_start = page_offset(page) + PAGE_CACHE_SIZE, | 2555 | .range_start = page_offset(page) + PAGE_CACHE_SIZE, |
2557 | .range_end = (loff_t)-1, | 2556 | .range_end = (loff_t)-1, |
@@ -2584,7 +2583,6 @@ int extent_write_locked_range(struct extent_io_tree *tree, struct inode *inode, | |||
2584 | }; | 2583 | }; |
2585 | struct writeback_control wbc_writepages = { | 2584 | struct writeback_control wbc_writepages = { |
2586 | .sync_mode = mode, | 2585 | .sync_mode = mode, |
2587 | .older_than_this = NULL, | ||
2588 | .nr_to_write = nr_pages * 2, | 2586 | .nr_to_write = nr_pages * 2, |
2589 | .range_start = start, | 2587 | .range_start = start, |
2590 | .range_end = end + 1, | 2588 | .range_end = end + 1, |