xfs: don't use XFS_BMAPI_IGSTATE in xfs_map_blocks
authorChristoph Hellwig <hch@lst.de>
Thu, 12 Jul 2018 05:25:59 +0000 (22:25 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Thu, 12 Jul 2018 05:25:59 +0000 (22:25 -0700)
We want to be able to use the extent state as a reliably indicator for
the type of I/O, and stop using the buffer head state.  For this we
need to stop using the XFS_BMAPI_IGSTATE so that we don't see merged
extents of different types.

Based on a patch from Dave Chinner.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
fs/xfs/xfs_aops.c

index 1d1cb917cc6e06f41df7f63c012e7ce36272c182..6b615068334356f1b9c1b1d8d84ed4ea797ae77e 100644 (file)
@@ -373,7 +373,6 @@ xfs_map_blocks(
        ssize_t                 count = i_blocksize(inode);
        xfs_fileoff_t           offset_fsb, end_fsb;
        int                     error = 0;
-       int                     bmapi_flags = XFS_BMAPI_ENTIRE;
        int                     nimaps = 1;
 
        if (XFS_FORCED_SHUTDOWN(mp))
@@ -393,8 +392,6 @@ xfs_map_blocks(
                return 0;
 
        ASSERT(type != XFS_IO_COW);
-       if (type == XFS_IO_UNWRITTEN)
-               bmapi_flags |= XFS_BMAPI_IGSTATE;
 
        xfs_ilock(ip, XFS_ILOCK_SHARED);
        ASSERT(ip->i_d.di_format != XFS_DINODE_FMT_BTREE ||
@@ -406,7 +403,7 @@ xfs_map_blocks(
        end_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)offset + count);
        offset_fsb = XFS_B_TO_FSBT(mp, offset);
        error = xfs_bmapi_read(ip, offset_fsb, end_fsb - offset_fsb,
-                               imap, &nimaps, bmapi_flags);
+                               imap, &nimaps, XFS_BMAPI_ENTIRE);
        /*
         * Truncate an overwrite extent if there's a pending CoW
         * reservation before the end of this extent.  This forces us