From: Dave Hansen With the r/o bind mount patches, we can have as many spinlocks nested as there are CPUs on the system. Lockdep freaks out after 8. So, create a new lockdep class of locks for the mnt_writer spinlocks, and initialize each of the cpu locks to be in a different class. It should shut up warnings like this, while still allowing some of the lockdep goodness to remain: ============================================= [ INFO: possible recursive locking detected ] Signed-off-by: Dave Hansen Signed-off-by: Andrew Morton --- fs/namespace.c | 2 ++ 1 file changed, 2 insertions(+) diff -puN fs/namespace.c~r-o-bind-mounts-track-number-of-mount-writers-make-lockdep-happy-with-r-o-bind-mounts fs/namespace.c --- a/fs/namespace.c~r-o-bind-mounts-track-number-of-mount-writers-make-lockdep-happy-with-r-o-bind-mounts +++ a/fs/namespace.c @@ -112,6 +112,7 @@ struct mnt_writer { * must be ordered by cpu number. */ spinlock_t lock; + struct lock_class_key lock_class; /* compiles out with !lockdep */ unsigned long count; struct vfsmount *mnt; } ____cacheline_aligned_in_smp; @@ -123,6 +124,7 @@ static int __init init_mnt_writers(void) for_each_possible_cpu(cpu) { struct mnt_writer *writer = &per_cpu(mnt_writers, cpu); spin_lock_init(&writer->lock); + lockdep_set_class(&writer->lock, &writer->lock_class); writer->count = 0; } return 0; _