xfs
[Top] [All Lists]

Re: [PATCH 8/8] xfs: fix dquot shaker deadlock

To: Dave Chinner <david@xxxxxxxxxxxxx>
Subject: Re: [PATCH 8/8] xfs: fix dquot shaker deadlock
From: Alex Elder <aelder@xxxxxxx>
Date: Wed, 26 Jan 2011 15:23:17 -0600
Cc: xfs@xxxxxxxxxxx
In-reply-to: <1295945444-29488-9-git-send-email-david@xxxxxxxxxxxxx>
References: <1295945444-29488-1-git-send-email-david@xxxxxxxxxxxxx> <1295945444-29488-9-git-send-email-david@xxxxxxxxxxxxx>
Reply-to: aelder@xxxxxxx
On Tue, 2011-01-25 at 19:50 +1100, Dave Chinner wrote:
> From: Dave Chinner <dchinner@xxxxxxxxxx>
> 
> Commit 368e136 ("xfs: remove duplicate code from dquot reclaim") fails
> to unlock the dquot freelist when the number of loop restarts is
> exceeded in xfs_qm_dqreclaim_one(). This causes hangs in memory
> reclaim. Remove the bogus loop exit check that causes the problem.
> 
> Reported-by: Malcolm Scott <lkml@xxxxxxxxxxx>
> Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
> ---
>  fs/xfs/quota/xfs_qm.c |    2 --
>  1 files changed, 0 insertions(+), 2 deletions(-)

I see what Christoph means about the double-increment of
restart in the case where qi_dqlist_lock is not acquired.
That ought to be fixed.  I also agree with his suggested
loop termination condition change.

Also, restarts is pre-incremented in the XFS_DQ_WANT case
at the top, but post-incremented elsewhere for some reason.
I think they all ought to be the same.

                                        -Alex


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