writeback: make writeback_control.nr_to_write straight
authorWu Fengguang <fengguang.wu@intel.com>
Thu, 5 May 2011 01:54:37 +0000 (19:54 -0600)
committerWu Fengguang <fengguang.wu@intel.com>
Sun, 10 Jul 2011 05:09:01 +0000 (22:09 -0700)
commitd46db3d58233be4be980eb1e42eebe7808bcabab
tree6d813b33938d915f0c0633e8615d1ffdcc554c96
parent36715cef0770b7e2547892b7c3197fc024274630
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>
fs/btrfs/extent_io.c
fs/fs-writeback.c
include/linux/writeback.h
include/trace/events/writeback.h
mm/backing-dev.c
mm/page-writeback.c