]> Pileus Git - ~andy/linux/blobdiff - fs/xfs/xfs_attr_list.c
Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[~andy/linux] / fs / xfs / xfs_attr_list.c
index 2d174b12815345b5aafacb7046caf6a0bc98d147..01db96f60cf05abf1f42e20252cdff4de0ebea0d 100644 (file)
@@ -507,17 +507,17 @@ xfs_attr_list_int(
 {
        int error;
        xfs_inode_t *dp = context->dp;
+       uint            lock_mode;
 
        XFS_STATS_INC(xs_attr_list);
 
        if (XFS_FORCED_SHUTDOWN(dp->i_mount))
                return EIO;
 
-       xfs_ilock(dp, XFS_ILOCK_SHARED);
-
        /*
         * Decide on what work routines to call based on the inode size.
         */
+       lock_mode = xfs_ilock_attr_map_shared(dp);
        if (!xfs_inode_hasattr(dp)) {
                error = 0;
        } else if (dp->i_d.di_aformat == XFS_DINODE_FMT_LOCAL) {
@@ -527,9 +527,7 @@ xfs_attr_list_int(
        } else {
                error = xfs_attr_node_list(context);
        }
-
-       xfs_iunlock(dp, XFS_ILOCK_SHARED);
-
+       xfs_iunlock(dp, lock_mode);
        return error;
 }