[Top] [All Lists]

Re: BUG: task blocked on waiter in xfs_trans_dqlockedjoin()

To: Alex Elder <elder@xxxxxxxxxxxxx>
Subject: Re: BUG: task blocked on waiter in xfs_trans_dqlockedjoin()
From: Dave Chinner <david@xxxxxxxxxxxxx>
Date: Tue, 17 Apr 2012 10:09:39 +1000
Cc: xfs@xxxxxxxxxxx
In-reply-to: <4F8C1FDD.70600@xxxxxxxxxxxxx>
References: <4F8C1FDD.70600@xxxxxxxxxxxxx>
User-agent: Mutt/1.5.21 (2010-09-15)
On Mon, Apr 16, 2012 at 08:34:21AM -0500, Alex Elder wrote:
> I am getting the following warning while running xfstests.  I haven't
> started looking at it closely yet, but I wanted to report it so others
> could have a look.  The XFS code in use was at commit c922bbc819,

Which does not modify locking at all.

> with ad637a10f4 cherry-picked on top of it.  The tests all passed,

And that modifies the way we do inode reclaim synchronisation by
ILOCK rather than by IOLOCK|ILOCK. Neither of these are touching the
dquot locking at all, so I'm having trouble understanding why these
commits would cause a problem with a dquot mutex....

> so now I'm going to have to narrow down which test produces the failure
> (it was not near the first, nor the last test...).
> Here is the source of the warning:
>         DEBUG_LOCKS_WARN_ON(ti->task->blocked_on != waiter);

That implies that the task is currently trying to acquire two
mutexes at once - which I can't see is possible. How different are
the two values i.e. are you seeing memory corruption?

Also, what case is the code running through? is it taking the
xfs_dqlock2() branch, and if so are the two dquots different?


Dave Chinner

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