2.6.31 xfs_fs_destroy_inode: cannot reclaim

Dave Chinner david at fromorbit.com
Sun Oct 18 20:16:00 CDT 2009


On Mon, Oct 12, 2009 at 07:38:54PM -0400, Christoph Hellwig wrote:
> On Sun, Oct 11, 2009 at 09:43:09AM +0200, Patrick Schreurs wrote:
> > Hello Christoph,
> >
> > Attached you'll find a screenshot from a 2.6.31.3 server, which includes  
> > your patches and has XFS_DEBUG turned on. I truly hope this is useful to  
> > you.
> 
> Thanks.  The patch below should fix the inode reclaim race that could
> lead to the double free you're seeing.  To be applied ontop of all
> the other patches I sent you.
> 
> Index: xfs/fs/xfs/linux-2.6/xfs_sync.c
> ===================================================================
> --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.c	2009-10-11 19:09:43.828254119 +0200
> +++ xfs/fs/xfs/linux-2.6/xfs_sync.c	2009-10-12 13:48:14.886006087 +0200
> @@ -670,22 +670,22 @@ xfs_reclaim_inode(
>  {
>  	xfs_perag_t	*pag = xfs_get_perag(ip->i_mount, ip->i_ino);
>  
> -	/* The hash lock here protects a thread in xfs_iget_core from
> -	 * racing with us on linking the inode back with a vnode.
> -	 * Once we have the XFS_IRECLAIM flag set it will not touch
> -	 * us.
> +	/*
> +	 * The hash lock here protects a thread in xfs_iget from racing with
> +	 * us on recycling the inode.  Once we have the XFS_IRECLAIM flag set
> +	 * it will not touch it.
>  	 */
> -	write_lock(&pag->pag_ici_lock);

Did you mean to remove this write_lock? The patch does not remove
the unlocks....

Cheers,

Dave.
-- 
Dave Chinner
david at fromorbit.com




More information about the xfs mailing list