From: Dave Chinner <david@fromorbit.com>
To: Christoph Hellwig <hch@infradead.org>
Cc: xfs@oss.sgi.com
Subject: Re: [PATCH 8/8] xfs: fix dquot shaker deadlock
Date: Thu, 27 Jan 2011 13:24:04 +1100 [thread overview]
Message-ID: <20110127022404.GG21311@dastard> (raw)
In-Reply-To: <20110127015420.GF21311@dastard>
On Thu, Jan 27, 2011 at 12:54:20PM +1100, Dave Chinner wrote:
> On Tue, Jan 25, 2011 at 04:52:42AM -0500, Christoph Hellwig wrote:
> > On Tue, Jan 25, 2011 at 07:50:44PM +1100, Dave Chinner wrote:
> > > From: Dave Chinner <dchinner@redhat.com>
> > >
> > > 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.
> >
> > The fix looks correct, but it's a bit inconsequential about when
> > to adhere the retry limit and when not. Shouldn't we just turn the
> > exit condition into:
> >
> > if (dqout || restarts >= XFS_QM_RECLAIM_MAX_RESTARTS)
> > break;
>
> I'm guessing that you are suggesting changing the code increments
> and checks restarts to:
>
> restarts++;
> goto startagain;
>
> otherwise this doesn't make sense as restarts will never go above
> XFS_QM_RECLAIM_MAX_RESTARTS at this point in the loop.
Argh, there's one loop case where it does increment restarts without
jumping to startagain. I'm going to change this loop to stack the
loop exit cases rather than do them all individually and making it
difficult to work out what is going on.
So each case will increment restarts itself as necessary, set a
"startagain" flag if a loop restart is required, and set dqpout if a
successful reclaim occurred. That way each case can then jump to the
correctly stacked unlock point and all the loop exit logic is in one
place.
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2011-01-27 2:21 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-25 8:50 [PATCH 0/8] xfs: 2.6.38-rc candidate fixes V2 Dave Chinner
2011-01-25 8:50 ` [PATCH 1/8] xfs: fix log ticket leak on forced shutdown Dave Chinner
2011-01-26 21:22 ` Alex Elder
2011-01-25 8:50 ` [PATCH 2/8] xfs: fix efi item " Dave Chinner
2011-01-25 23:53 ` Christoph Hellwig
2011-01-27 0:35 ` Dave Chinner
2011-01-26 21:22 ` Alex Elder
2011-01-25 8:50 ` [PATCH 3/8] xfs: speculative delayed allocation uses rounddown_power_of_2 badly Dave Chinner
2011-01-26 21:22 ` Alex Elder
2011-01-25 8:50 ` [PATCH 4/8] xfs: limit extent length for allocation to AG size Dave Chinner
2011-01-26 21:22 ` Alex Elder
2011-01-27 0:38 ` Dave Chinner
2011-01-25 8:50 ` [PATCH 5/8] xfs: prevent extsize alignment from exceeding maximum extent size Dave Chinner
2011-01-25 9:49 ` Christoph Hellwig
2011-01-26 21:22 ` Alex Elder
2011-01-27 0:50 ` Dave Chinner
2011-01-25 8:50 ` [PATCH 6/8] xfs: limit extsize to size of AGs and/or MAXEXTLEN Dave Chinner
2011-01-26 21:23 ` Alex Elder
2011-01-25 8:50 ` [PATCH 7/8] xfs: handle CIl transaction commit failures correctly Dave Chinner
2011-01-25 9:53 ` Christoph Hellwig
2011-01-26 21:23 ` Alex Elder
2011-01-25 8:50 ` [PATCH 8/8] xfs: fix dquot shaker deadlock Dave Chinner
2011-01-25 9:52 ` Christoph Hellwig
2011-01-27 1:54 ` Dave Chinner
2011-01-27 2:24 ` Dave Chinner [this message]
2011-01-26 21:23 ` Alex Elder
2011-01-25 9:20 ` [PATCH 0/8] xfs: 2.6.38-rc candidate fixes V2 Christoph Hellwig
2011-01-26 21:23 ` Alex Elder
-- strict thread matches above, loose matches on Subject: below --
2011-01-27 3:53 [PATCH 0/8] xfs: candidate 2.6.38-rc fixes V3 Dave Chinner
2011-01-27 3:53 ` [PATCH 8/8] xfs: fix dquot shaker deadlock Dave Chinner
2011-01-27 15:29 ` Alex Elder
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110127022404.GG21311@dastard \
--to=david@fromorbit.com \
--cc=hch@infradead.org \
--cc=xfs@oss.sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox