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 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>