deadlock below xfs_ialloc, when radix_tree_preload goes into reclaim?

Dave Chinner david at fromorbit.com
Sat May 5 18:31:33 CDT 2012


On Fri, May 04, 2012 at 05:55:21PM -0400, Peter Watkins wrote:
> Greetings,
> 
> Anyone seen a deadlock like the one below? It's a 17TB system with 32
> bit inodes and it's doing lots of inode allocations at the same time.
> So you might consider it a stress test for inode alloc activity on a
> single AG.
> 
> xfs_ialloc called xfs_dialloc and got the agi header buf, then it
> called xfs_iget which went into reclaim during radix_tree_preload.
> While trying to shrink the inode cache, xfs_iunlink_remove tries to
> get the same agi header buf.
> 
> With 64 bit inodes you'd be less likely to hit this path, but it's
> still possible, no?
> 
> Should this call to radix_tree_preload use GFP_NOFS?

Yes, because xfs_iget canbe called from transaction context. Can you
send a patch for the current TOT kernel?

Cheers,

Dave.
-- 
Dave Chinner
david at fromorbit.com



More information about the xfs mailing list