diff options
Diffstat (limited to 'fs/xfs/xfs_vnodeops.c')
-rw-r--r-- | fs/xfs/xfs_vnodeops.c | 22 |
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; |