xfs: actually report xattr extents via iomap
authorDarrick J. Wong <darrick.wong@oracle.com>
Thu, 6 Apr 2017 23:00:39 +0000 (16:00 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Thu, 6 Apr 2017 23:00:39 +0000 (16:00 -0700)
Apparently FIEMAP for xattrs has been broken since we switched to
the iomap backend because of an incorrect check for xattr presence.
Also fix the broken locking.

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

index 009f8243dddc20ed39946cfbc3e9492e5543d273..b2f0901bb517e52792b83941e444fe9826b6246a 100644 (file)
@@ -1170,10 +1170,10 @@ xfs_xattr_iomap_begin(
        if (XFS_FORCED_SHUTDOWN(mp))
                return -EIO;
 
-       lockmode = xfs_ilock_data_map_shared(ip);
+       lockmode = xfs_ilock_attr_map_shared(ip);
 
        /* if there are no attribute fork or extents, return ENOENT */
-       if (XFS_IFORK_Q(ip) || !ip->i_d.di_anextents) {
+       if (!XFS_IFORK_Q(ip) || !ip->i_d.di_anextents) {
                error = -ENOENT;
                goto out_unlock;
        }