mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-04-13 09:59:31 +00:00
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: Dave Chinner <dchinner@redhat.com> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Brian Foster <bfoster@redhat.com> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
This commit is contained in:
parent
0e8e2c6343
commit
9552e14d3e
1 changed files with 5 additions and 3 deletions
|
@ -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 @@ reclaim:
|
|||
|
||||
out_ifunlock:
|
||||
xfs_ifunlock(ip);
|
||||
out:
|
||||
out_iunlock:
|
||||
xfs_iunlock(ip, XFS_ILOCK_EXCL);
|
||||
out:
|
||||
xfs_iflags_clear(ip, XFS_IRECLAIM);
|
||||
return false;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue