Commit 9552e14d authored by Dave Chinner's avatar Dave Chinner Committed by Darrick J. Wong

xfs: don't block inode reclaim on the ILOCK

When we attempt to reclaim an inode, the first thing we do is take
the inode lock. This is blocking right now, so if the inode being
accessed by something else (e.g. being flushed to the cluster
buffer) we will block here.

Change this to a trylock so that we do not block inode reclaim
unnecessarily here.
Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
Reviewed-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: default avatarBrian Foster <bfoster@redhat.com>
Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
parent 0e8e2c63
......@@ -1119,9 +1119,10 @@ xfs_reclaim_inode(
{
xfs_ino_t ino = ip->i_ino; /* for radix_tree_delete */
xfs_ilock(ip, XFS_ILOCK_EXCL);
if (!xfs_iflock_nowait(ip))
if (!xfs_ilock_nowait(ip, XFS_ILOCK_EXCL))
goto out;
if (!xfs_iflock_nowait(ip))
goto out_iunlock;
if (XFS_FORCED_SHUTDOWN(ip->i_mount)) {
xfs_iunpin_wait(ip);
......@@ -1188,8 +1189,9 @@ xfs_reclaim_inode(
out_ifunlock:
xfs_ifunlock(ip);
out:
out_iunlock:
xfs_iunlock(ip, XFS_ILOCK_EXCL);
out:
xfs_iflags_clear(ip, XFS_IRECLAIM);
return false;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment