Re: [PATCH 2/2] Fix i_state of inode is changed after the inode is freed [try #2]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi, Nathan


>Fix i_state of the inode is changed after the inode is freed.
>
>Signed-off-by: Masayuki Saito <[email protected]>
>Signed-off-by: ASANO Masahiro <[email protected]>
>---
>
>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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux