|
|
| version 1.452, 2006/09/14 03:48:58 | version 1.453, 2006/11/07 14:39:38 |
|---|---|
| Line 2193 xfs_ifree_cluster( | Line 2193 xfs_ifree_cluster( |
| /* Inode not in memory or we found it already, | /* Inode not in memory or we found it already, |
| * nothing to do | * nothing to do |
| */ | */ |
| if (!ip || (ip->i_flags & XFS_ISTALE)) { | if (!ip || xfs_iflags_test(ip, XFS_ISTALE)) { |
| read_unlock(&ih->ih_lock); | read_unlock(&ih->ih_lock); |
| continue; | continue; |
| } | } |
| Line 2215 xfs_ifree_cluster( | Line 2215 xfs_ifree_cluster( |
| if (ip == free_ip) { | if (ip == free_ip) { |
| if (xfs_iflock_nowait(ip)) { | if (xfs_iflock_nowait(ip)) { |
| spin_lock(&ip->i_flags_lock); | xfs_iflags_set(ip, XFS_ISTALE); |
| ip->i_flags |= XFS_ISTALE; | |
| spin_unlock(&ip->i_flags_lock); | |
| if (xfs_inode_clean(ip)) { | if (xfs_inode_clean(ip)) { |
| xfs_ifunlock(ip); | xfs_ifunlock(ip); |
| } else { | } else { |
| Line 2231 xfs_ifree_cluster( | Line 2228 xfs_ifree_cluster( |
| if (xfs_ilock_nowait(ip, XFS_ILOCK_EXCL)) { | if (xfs_ilock_nowait(ip, XFS_ILOCK_EXCL)) { |
| if (xfs_iflock_nowait(ip)) { | if (xfs_iflock_nowait(ip)) { |
| spin_lock(&ip->i_flags_lock); | xfs_iflags_set(ip, XFS_ISTALE); |
| ip->i_flags |= XFS_ISTALE; | |
| spin_unlock(&ip->i_flags_lock); | |
| if (xfs_inode_clean(ip)) { | if (xfs_inode_clean(ip)) { |
| xfs_ifunlock(ip); | xfs_ifunlock(ip); |
| Line 2263 xfs_ifree_cluster( | Line 2258 xfs_ifree_cluster( |
| AIL_LOCK(mp,s); | AIL_LOCK(mp,s); |
| iip->ili_flush_lsn = iip->ili_item.li_lsn; | iip->ili_flush_lsn = iip->ili_item.li_lsn; |
| AIL_UNLOCK(mp, s); | AIL_UNLOCK(mp, s); |
| spin_lock(&iip->ili_inode->i_flags_lock); | xfs_iflags_set(ip, XFS_ISTALE); |
| iip->ili_inode->i_flags |= XFS_ISTALE; | |
| spin_unlock(&iip->ili_inode->i_flags_lock); | |
| pre_flushed++; | pre_flushed++; |
| } | } |
| lip = lip->li_bio_list; | lip = lip->li_bio_list; |
| Line 2764 xfs_iunpin( | Line 2757 xfs_iunpin( |
| struct inode *inode = NULL; | struct inode *inode = NULL; |
| spin_lock(&ip->i_flags_lock); | spin_lock(&ip->i_flags_lock); |
| if (!(ip->i_flags & (XFS_IRECLAIM|XFS_IRECLAIMABLE))) { | if (!__xfs_iflags_test(ip, XFS_IRECLAIM|XFS_IRECLAIMABLE)) { |
| bhv_vnode_t *vp = XFS_ITOV_NULL(ip); | bhv_vnode_t *vp = XFS_ITOV_NULL(ip); |
| /* make sync come back and flush this inode */ | /* make sync come back and flush this inode */ |