Messages in this thread | | | Subject | Re: [PATCH 2/2] Fix i_state of inode is changed after the inode is freed [try #2] | From | Masayuki Saito <> | Date | Thu, 31 Aug 2006 11:44:23 +0900 |
| |
Hi, Nathan
>Fix i_state of the inode is changed after the inode is freed. > >Signed-off-by: Masayuki Saito <m-saito@tnes.nec.co.jp> >Signed-off-by: ASANO Masahiro <masano@tnes.nec.co.jp> >--- > >Index: xfs-linux/xfs_inode.c >=================================================================== >--- xfs-linux.orig/xfs_inode.c 2006-08-24 17:02:36.896740000 +1000 >+++ xfs-linux/xfs_inode.c 2006-08-24 17:09:29.430521750 +1000 >@@ -2761,19 +2761,29 @@ xfs_iunpin( > * call as the inode reclaim may be blocked waiting for > * the inode to become unpinned. > */ >+ struct inode *inode = NULL; >+ >+ spin_lock(&ip->i_flags_lock); > if (!(ip->i_flags & (XFS_IRECLAIM|XFS_IRECLAIMABLE))) { > bhv_vnode_t *vp = XFS_ITOV_NULL(ip); > > /* make sync come back and flush this inode */ > if (vp) { >- struct inode *inode = vn_to_inode(vp); >+ inode = vn_to_inode(vp); > > if (!(inode->i_state & >- (I_NEW|I_FREEING|I_CLEAR))) >- mark_inode_dirty_sync(inode); >+ (I_NEW|I_FREEING|I_CLEAR))) { >+ inode = igrab(inode); >+ if (inode) >+ mark_inode_dirty_sync(inode); >+ } else >+ inode = NULL; > } > } >+ spin_unlock(&ip->i_flags_lock); > wake_up(&ip->i_ipin_wait); >+ if (inode) >+ iput(inode); > } > }
Are the patches going to be merged?
Masayuki - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |