On Tue, Dec 06, 2011 at 04:58:18PM -0500, Christoph Hellwig wrote: > Introduce a new XFS_DQ_FREEING flag that tells lookup and mplist walks > to skip a dquot that is beeing freed, and use this avoid the trylock > on the hash and mplist locks in xfs_qm_dqreclaim_one. Also simplify > xfs_dqpurge by moving the inodes to a dispose list after marking them > XFS_DQ_FREEING and avoid the locker ordering constraints. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> Wow. That was a tough review. Reviewed-by: Ben Myers <bpm@xxxxxxx> > Index: xfs/fs/xfs/xfs_qm.c > =================================================================== ... > @@ -1737,57 +1716,42 @@ again: > } > goto dqunlock; > } > + xfs_dqfunlock(dqp); > > /* > - * We're trying to get the hashlock out of order. This races > - * with dqlookup; so, we giveup and goto the next dquot if > - * we couldn't get the hashlock. This way, we won't starve > - * a dqlookup process that holds the hashlock that is > - * waiting for the freelist lock. > + * Prevent lookup now that we are going to reclaim the dquot. > + * Once XFS_DQ_FREEING is set lookup won't touch the inode, dquot _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs