• Dave Chinner's avatar
    xfs: handle negative wbc->nr_to_write during sync writeback · efceab1d
    Dave Chinner authored
    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.
    
    Cc: <stable@kernel.org>
    Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    efceab1d
xfs_aops.c 38.2 KB