On Mon, Jun 14, 2010 at 09:16:29PM -0400, Rik van Riel wrote:Besides, there really isn't the right context in the block layer to
be able to queue and prioritise large amounts of IO without
significant penalties to some higher layer operation.
Can we kick flushing for the whole inode at once from
vmscan.c?
kswapd really should be a last effort tool to clean filesystem pages.
If it does enough I/O for this to matter significantly we need to
fix the VM to move more work to the flusher threads instead of trying
to fix kswapd.
Would it be hard to add a "please flush this file"
way to call the filesystem flushing threads?
We already have that API, in Jens' latest tree that's
sync_inodes_sb/writeback_inodes_sb. We could also add a non-waiting
variant if required, but I think the big problem with kswapd is that
we want to wait on I/O completion under circumstances.