[PATCH 0/5] [RFC] transfer ASYNC vmscan writeback IO to the flusher threads

Wu Fengguang
2010-07-29T11:51:42Z

Andrew,

It's possible to transfer ASYNC vmscan writeback IOs to the flusher threads.
This simple patchset shows the basic idea. Since it's a big behavior change,
there are inevitably lots of details to sort out. I don't know where it will
go after tests and discussions, so the patches are intentionally kept simple.

sync livelock avoidance (need more to be complete, but this is minimal required for the last two patches)
[PATCH 1/5] writeback: introduce wbc.for_sync to cover the two sync stages
[PATCH 2/5] writeback: stop periodic/background work on seeing sync works
[PATCH 3/5] writeback: prevent sync livelock with the sync_after timestamp

let the flusher threads do ASYNC writeback for pageout()
[PATCH 4/5] writeback: introduce bdi_start_inode_writeback()
[PATCH 5/5] vmscan: transfer async file writeback to the flusher

The last two patches are the meats, they depend on the first three patches to
kick the background writeback work, so that the for_reclaim writeback can be
serviced timely.

Comments are welcome!

Thanks,
Fengguang