summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/xfs/xfs_icache.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/fs/xfs/xfs_icache.c b/fs/xfs/xfs_icache.c
index 592eab23c6e7..f387ec21dd35 100644
--- a/fs/xfs/xfs_icache.c
+++ b/fs/xfs/xfs_icache.c
@@ -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;
}