aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_vnodeops.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/xfs/xfs_vnodeops.c')
-rw-r--r--fs/xfs/xfs_vnodeops.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c
index 64c5953feca4..ce82a2d0acbe 100644
--- a/fs/xfs/xfs_vnodeops.c
+++ b/fs/xfs/xfs_vnodeops.c
@@ -3694,12 +3694,12 @@ xfs_finish_reclaim(
3694 * We get the flush lock regardless, though, just to make sure 3694 * We get the flush lock regardless, though, just to make sure
3695 * we don't free it while it is being flushed. 3695 * we don't free it while it is being flushed.
3696 */ 3696 */
3697 if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) { 3697 if (!locked) {
3698 if (!locked) { 3698 xfs_ilock(ip, XFS_ILOCK_EXCL);
3699 xfs_ilock(ip, XFS_ILOCK_EXCL); 3699 xfs_iflock(ip);
3700 xfs_iflock(ip); 3700 }
3701 }
3702 3701
3702 if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) {
3703 if (ip->i_update_core || 3703 if (ip->i_update_core ||
3704 ((ip->i_itemp != NULL) && 3704 ((ip->i_itemp != NULL) &&
3705 (ip->i_itemp->ili_format.ilf_fields != 0))) { 3705 (ip->i_itemp->ili_format.ilf_fields != 0))) {
@@ -3719,17 +3719,11 @@ xfs_finish_reclaim(
3719 ASSERT(ip->i_update_core == 0); 3719 ASSERT(ip->i_update_core == 0);
3720 ASSERT(ip->i_itemp == NULL || 3720 ASSERT(ip->i_itemp == NULL ||
3721 ip->i_itemp->ili_format.ilf_fields == 0); 3721 ip->i_itemp->ili_format.ilf_fields == 0);
3722 xfs_iunlock(ip, XFS_ILOCK_EXCL);
3723 } else if (locked) {
3724 /*
3725 * We are not interested in doing an iflush if we're
3726 * in the process of shutting down the filesystem forcibly.
3727 * So, just reclaim the inode.
3728 */
3729 xfs_ifunlock(ip);
3730 xfs_iunlock(ip, XFS_ILOCK_EXCL);
3731 } 3722 }
3732 3723
3724 xfs_ifunlock(ip);
3725 xfs_iunlock(ip, XFS_ILOCK_EXCL);
3726
3733 reclaim: 3727 reclaim:
3734 xfs_ireclaim(ip); 3728 xfs_ireclaim(ip);
3735 return 0; 3729 return 0;