xfs: ioends require logically contiguous file offsets
authorDarrick J. Wong <darrick.wong@oracle.com>
Sun, 6 Mar 2016 22:32:14 +0000 (09:32 +1100)
committerDave Chinner <david@fromorbit.com>
Sun, 6 Mar 2016 22:32:14 +0000 (09:32 +1100)
We need to create a new ioend if the current writepage call isn't
logically contiguous with the range contained in the previous ioend.
Hopefully writepage gets called in order of increasing file offset.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
fs/xfs/xfs_aops.c

index 46dc921..b125f90 100644 (file)
@@ -520,7 +520,8 @@ xfs_add_to_ioend(
        struct list_head        *iolist)
 {
        if (!wpc->ioend || wpc->io_type != wpc->ioend->io_type ||
-           bh->b_blocknr != wpc->last_block + 1) {
+           bh->b_blocknr != wpc->last_block + 1 ||
+           offset != wpc->ioend->io_offset + wpc->ioend->io_size) {
                struct xfs_ioend        *new;
 
                if (wpc->ioend)