xfs
[Top] [All Lists]

Re: [patch 12/19] xfs: flatten the dquot lock ordering

To: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Subject: Re: [patch 12/19] xfs: flatten the dquot lock ordering
From: Ben Myers <bpm@xxxxxxx>
Date: Wed, 14 Dec 2011 16:18:20 -0600
Cc: xfs@xxxxxxxxxxx
In-reply-to: <20111206215854.769664827@xxxxxxxxxxxxxxxxxxxxxx>
References: <20111206215806.844405397@xxxxxxxxxxxxxxxxxxxxxx> <20111206215854.769664827@xxxxxxxxxxxxxxxxxxxxxx>
User-agent: Mutt/1.5.18 (2008-05-17)
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

<Prev in Thread] Current Thread [Next in Thread>