linux/fs/nfsd
Peter Zijlstra 4b75f78edc [PATCH] lockdep: annotate nfsd4 recover code
> =============================================
> [ INFO: possible recursive locking detected ]
> 2.6.18-1.2724.lockdepPAE #1
> ---------------------------------------------
> nfsd/6884 is trying to acquire lock:
>  (&inode->i_mutex){--..}, at: [<c04811e5>] vfs_rmdir+0x73/0xf4
>
> but task is already holding lock:
>  (&inode->i_mutex){--..}, at: [<f8dfa621>]
> nfsd4_clear_clid_dir+0x1f/0x3d [nfsd]
>
> other info that might help us debug this:
> 3 locks held by nfsd/6884:
>  #0:  (hash_sem){----}, at: [<f8de05eb>] nfsd+0x181/0x2ea [nfsd]
>  #1:  (client_mutex){--..}, at: [<f8df6d19>]
> nfsd4_setclientid_confirm+0x3b/0x2cf [nfsd]
>  #2:  (&inode->i_mutex){--..}, at: [<f8dfa621>]
> nfsd4_clear_clid_dir+0x1f/0x3d [nfsd]
>
> stack backtrace:
>  [<c040524d>] dump_trace+0x69/0x1af
>  [<c04053ab>] show_trace_log_lvl+0x18/0x2c
>  [<c040595f>] show_trace+0xf/0x11
>  [<c0405a53>] dump_stack+0x15/0x17
>  [<c043ca7a>] __lock_acquire+0x110/0x9b6
>  [<c043d91e>] lock_acquire+0x5c/0x7a
>  [<c061a41b>] __mutex_lock_slowpath+0xde/0x234
>  [<c04811e5>] vfs_rmdir+0x73/0xf4
>  [<f8dfa62b>] nfsd4_clear_clid_dir+0x29/0x3d [nfsd]
>  [<f8dfa733>] nfsd4_remove_clid_dir+0xb8/0xf8 [nfsd]
>  [<f8df6e90>] nfsd4_setclientid_confirm+0x1b2/0x2cf [nfsd]
>  [<f8def19a>] nfsd4_proc_compound+0x137a/0x166c [nfsd]
>  [<f8de00d5>] nfsd_dispatch+0xc5/0x180 [nfsd]
>  [<f8d09d83>] svc_process+0x3bd/0x631 [sunrpc]
>  [<f8de0604>] nfsd+0x19a/0x2ea [nfsd]
>  [<c0404e27>] kernel_thread_helper+0x7/0x10
> DWARF2 unwinder stuck at kernel_thread_helper+0x7/0x10
> Leftover inexact backtrace:
>  =======================

Some nesting annotation to the nfsd4 recovery code.
The vfs operations called will take dentry->d_inode->i_mutex.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Neil Brown <neilb@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-12-08 08:29:01 -08:00
..
auth.c [PATCH] knfsd: nfsd: nfsd_setuser doesn't really need to modify rqstp->rq_cred. 2006-04-11 06:18:52 -07:00
export.c [PATCH] nfsd: misc endianness annotations 2006-10-20 10:26:43 -07:00
lockd.c [PATCH] nfsd: misc endianness annotations 2006-10-20 10:26:43 -07:00
Makefile [PATCH] knfsd: nfsd4: reboot hash 2005-06-24 00:06:33 -07:00
nfs2acl.c [PATCH] nfsd: NFSv{2,3} trivial endianness annotations for error values 2006-10-20 10:26:42 -07:00
nfs3acl.c [PATCH] nfsd: NFSv{2,3} trivial endianness annotations for error values 2006-10-20 10:26:42 -07:00
nfs3proc.c [PATCH] nfsd4: fix open-create permissions 2006-11-08 18:29:23 -08:00
nfs3xdr.c [PATCH] remove NFSD_OPTIMIZE_SPACE 2006-12-07 08:39:45 -08:00
nfs4acl.c [PATCH] knfsd: nfsd4: acls: fix handling of zero-length acls 2006-10-04 07:55:20 -07:00
nfs4callback.c [PATCH] nfsd: misc endianness annotations 2006-10-20 10:26:43 -07:00
nfs4idmap.c [PATCH] fs: Conversions from kmalloc+memset to k(z|c)alloc 2006-09-27 08:26:10 -07:00
nfs4proc.c [PATCH] nfsd4: fix open-create permissions 2006-11-08 18:29:23 -08:00
nfs4recover.c [PATCH] lockdep: annotate nfsd4 recover code 2006-12-08 08:29:01 -08:00
nfs4state.c [PATCH] nfsd: change uses of f_{dentry, vfsmnt} to use f_path 2006-12-08 08:28:42 -08:00
nfs4xdr.c [PATCH] nfsd: NFSv4 errno endianness annotations 2006-10-20 10:26:43 -07:00
nfscache.c [PATCH] nfsd: misc endianness annotations 2006-10-20 10:26:43 -07:00
nfsctl.c [PATCH] nfsd: change uses of f_{dentry, vfsmnt} to use f_path 2006-12-08 08:28:42 -08:00
nfsfh.c [PATCH] nfsfh simple endianness annotations 2006-10-20 10:26:41 -07:00
nfsproc.c [PATCH] nfsd: NFSv{2,3} trivial endianness annotations for error values 2006-10-20 10:26:42 -07:00
nfssvc.c [PATCH] nfsd: misc endianness annotations 2006-10-20 10:26:43 -07:00
nfsxdr.c [PATCH] remove NFSD_OPTIMIZE_SPACE 2006-12-07 08:39:45 -08:00
stats.c [PATCH] knfsd: nfsd4: add per-operation server stats 2006-07-10 13:24:27 -07:00
vfs.c [PATCH] nfsd: change uses of f_{dentry, vfsmnt} to use f_path 2006-12-08 08:28:42 -08:00