2007-09-24 09:52:16

by Alexey Dobriyan

[permalink] [raw]
Subject: 2.6.23-rc7-mm1: r/o mounts joke with lockdep

static void lock_and_coalesce_cpu_mnt_writer_counts(void)
{
int cpu;
struct mnt_writer *cpu_writer;

for_each_possible_cpu(cpu) {
cpu_writer = &per_cpu(mnt_writers, cpu);
spin_lock_nested(&cpu_writer->lock, 42);
^^^^

What the heck is going on? Given that MAX_LOCKDEP_SUBCLASSES is only 8,
this reliably turns off lockdep at boot.


2007-09-24 16:40:40

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.23-rc7-mm1: r/o mounts joke with lockdep

On Mon, 24 Sep 2007 13:51:05 +0400 Alexey Dobriyan <[email protected]> wrote:

> static void lock_and_coalesce_cpu_mnt_writer_counts(void)
> {
> int cpu;
> struct mnt_writer *cpu_writer;
>
> for_each_possible_cpu(cpu) {
> cpu_writer = &per_cpu(mnt_writers, cpu);
> spin_lock_nested(&cpu_writer->lock, 42);
> ^^^^
>
> What the heck is going on?

that was some random 2:00AM hack by me to make the warnings go away.

> Given that MAX_LOCKDEP_SUBCLASSES is only 8,
> this reliably turns off lockdep at boot.

that explains why it worked so well.

2007-09-24 16:46:29

by Dave Hansen

[permalink] [raw]
Subject: Re: 2.6.23-rc7-mm1: r/o mounts joke with lockdep

On Mon, 2007-09-24 at 09:26 -0700, Andrew Morton wrote:
> On Mon, 24 Sep 2007 13:51:05 +0400 Alexey Dobriyan <[email protected]> wrote:
>
> > static void lock_and_coalesce_cpu_mnt_writer_counts(void)
> > {
> > int cpu;
> > struct mnt_writer *cpu_writer;
> >
> > for_each_possible_cpu(cpu) {
> > cpu_writer = &per_cpu(mnt_writers, cpu);
> > spin_lock_nested(&cpu_writer->lock, 42);
> > ^^^^
> >
> > What the heck is going on?
>
> that was some random 2:00AM hack by me to make the warnings go away.
>
> > Given that MAX_LOCKDEP_SUBCLASSES is only 8,
> > this reliably turns off lockdep at boot.
>
> that explains why it worked so well.

Arjan gave me some ideas on how to fix this more properly. I'm trying
to reproduce it and working on a patch now.

-- Dave