From: Boqun Feng <boqun.feng@gmail.com>
To: Mikhail Gavrilov <mikhail.v.gavrilov@gmail.com>
Cc: dsterba@suse.cz, Btrfs BTRFS <linux-btrfs@vger.kernel.org>,
Linux List Kernel Mailing <linux-kernel@vger.kernel.org>,
Chris Murphy <lists@colorremedies.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>, Will Deacon <will@kernel.org>,
Waiman Long <longman@redhat.com>,
Joel Fernandes <joel@joelfernandes.org>
Subject: Re: BUG: MAX_LOCKDEP_CHAIN_HLOCKS too low!
Date: Thu, 26 Jan 2023 14:51:42 -0800 [thread overview]
Message-ID: <Y9MD/q9Z9GbKpJRX@boqun-archlinux> (raw)
In-Reply-To: <CABXGCsMD6nAPpF34c6oMK47kHUQqADQPUCWrxyY7WFiKi1qPNg@mail.gmail.com>
On Fri, Jan 27, 2023 at 03:42:52AM +0500, Mikhail Gavrilov wrote:
> On Thu, Jan 26, 2023 at 10:39 PM Boqun Feng <boqun.feng@gmail.com> wrote:
> >
> > [Cc lock folks]
> >
> > On Thu, Jan 26, 2023 at 02:47:42PM +0500, Mikhail Gavrilov wrote:
> > > On Wed, Jan 25, 2023 at 10:21 PM David Sterba <dsterba@suse.cz> wrote:
> > > >
> > > > On Wed, Jan 25, 2023 at 01:27:48AM +0500, Mikhail Gavrilov wrote:
> > > > > On Tue, Jul 26, 2022 at 9:47 PM David Sterba <dsterba@suse.cz> wrote:
> > > > > >
> > > > > > On Tue, Jul 26, 2022 at 05:32:54PM +0500, Mikhail Gavrilov wrote:
> > > > > > > Hi guys.
> > > > > > > Always with intensive writing on a btrfs volume, the message "BUG:
> > > > > > > MAX_LOCKDEP_CHAIN_HLOCKS too low!" appears in the kernel logs.
> > > > > >
> > > > > > Increase the config value of LOCKDEP_CHAINS_BITS, default is 16, 18
> > > > > > tends to work.
> > > > >
> > > > > Hi,
> > > > > Today I was able to get the message "BUG: MAX_LOCKDEP_CHAIN_HLOCKS too
> > > > > low!" again even with LOCKDEP_CHAINS_BITS=18 and kernel 6.2-rc5.
> > > > >
> > > > > ❯ cat /boot/config-`uname -r` | grep LOCKDEP_CHAINS_BITS
> > > > > CONFIG_LOCKDEP_CHAINS_BITS=18
> > > > >
> > > > > [88685.088099] BUG: MAX_LOCKDEP_CHAIN_HLOCKS too low!
> > > > > [88685.088124] turning off the locking correctness validator.
> > > > > [88685.088133] Please attach the output of /proc/lock_stat to the bug report
> > > > > [88685.088142] CPU: 14 PID: 1749746 Comm: mv Tainted: G W L
> > > > > ------- --- 6.2.0-0.rc5.20230123git2475bf0250de.38.fc38.x86_64 #1
> > > > > [88685.088154] Hardware name: System manufacturer System Product
> > > > > Name/ROG STRIX X570-I GAMING, BIOS 4408 10/28/2022
> > > > >
> > > > > What's next? Increase this value to 19?
> > > >
> > > > Yes, though increasing the value is a workaround so you may see the
> > > > warning again.
> > >
> > > Is there any sense in this WARNING if we would ignore it and every
> > > time increase the threshold value?
> >
> > Lockdep uses static allocated array to track lock holdings chains to
> > avoid dynmaic memory allocation in its own code. So if you see the
> > warning it means your test has more combination of lock holdings than
> > the array can record. In other words, you reach the resource limitation,
> > and in that sense it makes sense to just ignore it and increase the
> > value: you want to give lockdep enough resource to work, right?
>
> It is needed for correct working btrfs. David, am I right?
>
> >
> > > May Be set 99 right away? Or remove such a check condition?
> >
> > That requires having 2^99 * 5 * sizeof(u16) memory for lock holding
> > chains array..
> >
> > However, a few other options we can try in lockdep are:
> >
> > * warn but not turn off the lockdep: the lock holding chain is
> > only a cache for what lock holding combination lockdep has ever
> > see, we also record the dependency in the graph. Without the
> > lock holding chain, lockdep can still work but just slower.
> >
> > * allow dynmaic memory allocation in lockdep: I think this might
> > be OK since we have lockdep_recursion to avoid lockdep code ->
> > mm code -> lockdep code -> mm code ... deadlock. But maybe I'm
> > missing something. And even we allow it, the use of memory
> > doesn't change, you will still need that amout of memory to
> > track lock holding chains.
> >
> > I'm not sure whether these options are better than just increasing the
> > number, maybe to unblock your ASAP, you can try make it 30 and make sure
> > you have large enough memory to test.
>
> About just to increase the LOCKDEP_CHAINS_BITS by 1. Where should this
> be done? In vanilla kernel on kernel.org? In a specific distribution?
> or the user must rebuild the kernel himself? Maybe increase
> LOCKDEP_CHAINS_BITS by 1 is most reliable solution, but it difficult
> to distribute to end users because the meaning of using packaged
> distributions is lost (user should change LOCKDEP_CHAINS_BITS in
> config and rebuild the kernel by yourself).
>
Lockdep is a dev tool to help finding out deadlocks, and it introduces
cost when enabled, although it's possible, I doubt no one will run
LOCKDEP enabled kernel in production environment. In other words, it's
a debug/test-kernel-only option.
Regards,
Boqun
> It would be great if the chosen value would simply work always
> everywhere. 30? ok! But as I understand, btrfs does not have any
> guarantees for this. David, am I right?
>
> Anyway, thank you for keeping the conversation going.
>
> --
> Best Regards,
> Mike Gavrilov.
next prev parent reply other threads:[~2023-01-26 22:52 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-26 12:32 BUG: MAX_LOCKDEP_CHAIN_HLOCKS too low! Mikhail Gavrilov
2022-07-26 16:42 ` David Sterba
2022-07-26 19:19 ` Chris Murphy
2022-07-26 19:21 ` Chris Murphy
2022-07-26 20:42 ` David Sterba
2022-08-03 19:28 ` Mikhail Gavrilov
2022-08-03 20:00 ` Chris Murphy
2022-08-04 7:35 ` Mikhail Gavrilov
2022-08-04 11:23 ` Tetsuo Handa
2023-01-24 20:27 ` Mikhail Gavrilov
2023-01-25 17:15 ` David Sterba
2023-01-26 9:47 ` Mikhail Gavrilov
2023-01-26 17:38 ` Boqun Feng
2023-01-26 18:30 ` Waiman Long
2023-01-26 18:59 ` Boqun Feng
2023-01-26 19:07 ` Waiman Long
2023-01-26 22:42 ` Mikhail Gavrilov
2023-01-26 22:51 ` Boqun Feng [this message]
2023-01-26 23:49 ` Boqun Feng
2023-01-27 0:20 ` Waiman Long
2023-01-27 3:37 ` Chris Murphy
2023-01-27 4:07 ` Boqun Feng
2023-01-27 5:35 ` Mikhail Gavrilov
2023-01-27 14:26 ` Waiman Long
2023-01-27 15:33 ` Chris Murphy
2025-03-09 22:51 ` Mikhail Gavrilov
2025-03-10 11:23 ` Peter Zijlstra
2025-03-10 9:08 ` Peter Zijlstra
2025-03-10 13:01 ` Peter Zijlstra
2025-03-10 11:21 ` Peter Zijlstra
2025-03-10 16:37 ` Boqun Feng
2025-09-23 7:03 ` Mikhail Gavrilov
-- strict thread matches above, loose matches on Subject: below --
2021-03-02 10:27 Johannes Thumshirn
2021-03-04 13:52 ` David Sterba
2020-12-09 8:02 Dmitry Vyukov
2019-03-06 18:04 syzbot
2019-04-11 1:43 ` syzbot
2019-04-11 12:14 ` syzbot
2019-04-11 21:50 ` Benjamin Herrenschmidt
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=Y9MD/q9Z9GbKpJRX@boqun-archlinux \
--to=boqun.feng@gmail.com \
--cc=dsterba@suse.cz \
--cc=joel@joelfernandes.org \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lists@colorremedies.com \
--cc=longman@redhat.com \
--cc=mikhail.v.gavrilov@gmail.com \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=will@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.