Excerpts from Christoph Hellwig's message of 2011-04-21 04:32:58 -0400:
> On Wed, Apr 20, 2011 at 02:23:29PM -0400, Chris Mason wrote:
> But given that you are able to reproduce it, does the following patch
> help your latencies? Currently XFS actually does stop I/O when
> nr_to_write reaches zero, but only for non-blocking I/O. This behaviour
> was introduced in commit efceab1d563153a2b1a6e7d35376241a48126989
>
> "xfs: handle negative wbc->nr_to_write during sync writeback"
>
> and works around issues in the generic writeback code.
>
>
> Index: linux-2.6/fs/xfs/linux-2.6/xfs_aops.c
> ===================================================================
> --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_aops.c 2011-04-21
> 10:20:48.303550404 +0200
> +++ linux-2.6/fs/xfs/linux-2.6/xfs_aops.c 2011-04-21 10:20:58.203496773
> +0200
> @@ -765,8 +765,7 @@ xfs_convert_page(
> SetPageUptodate(page);
>
> if (count) {
> - if (--wbc->nr_to_write <= 0 &&
> - wbc->sync_mode == WB_SYNC_NONE)
> + if (--wbc->nr_to_write <= 0)
> done = 1;
> }
> xfs_start_page_writeback(page, !page_dirty, count);
Sorry, this doesn't do it. I think that given what a strange special
case this is, we're best off waiting for the IO-less throttling, and
maybe changing the code in xfs/ext4 to be a little more seek aware. Or
maybe not, it has to get written eventually either way.
-chris
|