[PATCH] xfs: handle negative wbc->nr_to_write during sync writeback

Christoph Hellwig hch at infradead.org
Mon Aug 23 08:28:29 CDT 2010


On Mon, Aug 23, 2010 at 10:10:37PM +1000, Dave Chinner wrote:
> From: Dave Chinner <dchinner at redhat.com>
> 
> During data integrity (WB_SYNC_ALL) writeback, wbc->nr_to_write will
> go negative on inodes with more than 1024 dirty pages due to
> implementation details of write_cache_pages(). Currently XFS will
> abort page clustering in writeback once nr_to_write drops below
> zero, and so for data integrity writeback we will do very
> inefficient page at a time allocation and IO submission for inodes
> with large numbers of dirty pages.
> 
> Fix this by only aborting the page clustering code when
> wbc->nr_to_write is negative and the sync mode is WB_SYNC_NONE.

Looks okay, but I wonder why if we should remove the check entirely.
We're clustering inside the same extent, and we already have a cap
for the extent size.  That means the additional I/O basically is for
free and we really shouldn't let the writeback code restrict us here.

Reviewed-by: Christoph Hellwig <hch at lst.de>




More information about the xfs mailing list