|
|
| version 1.730, 2008/01/21 14:59:58 | version 1.731, 2008/02/08 15:16:53 |
|---|---|
| Line 3694 xfs_finish_reclaim( | Line 3694 xfs_finish_reclaim( |
| * We get the flush lock regardless, though, just to make sure | * We get the flush lock regardless, though, just to make sure |
| * we don't free it while it is being flushed. | * we don't free it while it is being flushed. |
| */ | */ |
| if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) { | if (!locked) { |
| if (!locked) { | xfs_ilock(ip, XFS_ILOCK_EXCL); |
| xfs_ilock(ip, XFS_ILOCK_EXCL); | xfs_iflock(ip); |
| xfs_iflock(ip); | } |
| } | |
| if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) { | |
| if (ip->i_update_core || | if (ip->i_update_core || |
| ((ip->i_itemp != NULL) && | ((ip->i_itemp != NULL) && |
| (ip->i_itemp->ili_format.ilf_fields != 0))) { | (ip->i_itemp->ili_format.ilf_fields != 0))) { |
| Line 3719 xfs_finish_reclaim( | Line 3719 xfs_finish_reclaim( |
| ASSERT(ip->i_update_core == 0); | ASSERT(ip->i_update_core == 0); |
| ASSERT(ip->i_itemp == NULL || | ASSERT(ip->i_itemp == NULL || |
| ip->i_itemp->ili_format.ilf_fields == 0); | ip->i_itemp->ili_format.ilf_fields == 0); |
| xfs_iunlock(ip, XFS_ILOCK_EXCL); | |
| } else if (locked) { | |
| /* | |
| * We are not interested in doing an iflush if we're | |
| * in the process of shutting down the filesystem forcibly. | |
| * So, just reclaim the inode. | |
| */ | |
| xfs_ifunlock(ip); | |
| xfs_iunlock(ip, XFS_ILOCK_EXCL); | |
| } | } |
| xfs_ifunlock(ip); | |
| xfs_iunlock(ip, XFS_ILOCK_EXCL); | |
| reclaim: | reclaim: |
| xfs_ireclaim(ip); | xfs_ireclaim(ip); |
| return 0; | return 0; |