xfs: match lock mode in xfs_buffered_write_iomap_begin()
authorZhang Yi <yi.zhang@huawei.com>
Thu, 25 Apr 2024 13:13:27 +0000 (21:13 +0800)
committerChandan Babu R <chandanbabu@kernel.org>
Mon, 29 Apr 2024 11:53:11 +0000 (17:23 +0530)
Commit 1aa91d9c9933 ("xfs: Add async buffered write support") replace
xfs_ilock(XFS_ILOCK_EXCL) with xfs_ilock_for_iomap() when locking the
writing inode, and a new variable lockmode is used to indicate the lock
mode. Although the lockmode should always be XFS_ILOCK_EXCL, it's still
better to use this variable instead of useing XFS_ILOCK_EXCL directly
when unlocking the inode.

Fixes: 1aa91d9c9933 ("xfs: Add async buffered write support")
Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
fs/xfs/xfs_iomap.c

index 9ce0f6b9df93e6f583f9ac8da19256d359231c3f..555603ef4234eec0c557f60ddba1564e95bc4298 100644 (file)
@@ -1175,13 +1175,13 @@ retry:
         * them out if the write happens to fail.
         */
        seq = xfs_iomap_inode_sequence(ip, IOMAP_F_NEW);
-       xfs_iunlock(ip, XFS_ILOCK_EXCL);
+       xfs_iunlock(ip, lockmode);
        trace_xfs_iomap_alloc(ip, offset, count, allocfork, &imap);
        return xfs_bmbt_to_iomap(ip, iomap, &imap, flags, IOMAP_F_NEW, seq);
 
 found_imap:
        seq = xfs_iomap_inode_sequence(ip, 0);
-       xfs_iunlock(ip, XFS_ILOCK_EXCL);
+       xfs_iunlock(ip, lockmode);
        return xfs_bmbt_to_iomap(ip, iomap, &imap, flags, 0, seq);
 
 found_cow:
@@ -1191,17 +1191,17 @@ found_cow:
                if (error)
                        goto out_unlock;
                seq = xfs_iomap_inode_sequence(ip, IOMAP_F_SHARED);
-               xfs_iunlock(ip, XFS_ILOCK_EXCL);
+               xfs_iunlock(ip, lockmode);
                return xfs_bmbt_to_iomap(ip, iomap, &cmap, flags,
                                         IOMAP_F_SHARED, seq);
        }
 
        xfs_trim_extent(&cmap, offset_fsb, imap.br_startoff - offset_fsb);
-       xfs_iunlock(ip, XFS_ILOCK_EXCL);
+       xfs_iunlock(ip, lockmode);
        return xfs_bmbt_to_iomap(ip, iomap, &cmap, flags, 0, seq);
 
 out_unlock:
-       xfs_iunlock(ip, XFS_ILOCK_EXCL);
+       xfs_iunlock(ip, lockmode);
        return error;
 }