[Ocfs2-devel] lockdep warning in ocfs2 quota

Joel Becker Joel.Becker at oracle.com
Wed Mar 24 15:01:39 PDT 2010


Jan,
	I got this on an ocfs2 filesystem with quota features enabled
(but quota enforcement not turned on).  Non-clustered ocfs2.  Fresh
mkfs.  Untarring a kernel tree.

Joel

=======================================================
[ INFO: possible circular locking dependency detected ]
2.6.34-rc1-kvm #179
-------------------------------------------------------
tar/2546 is trying to acquire lock:
 (&s->s_dquot.dqio_mutex){+.+...}, at: [<c10e980f>]
dquot_commit+0x26/0xc8

but task is already holding lock:
 (&s->s_dquot.dqptr_sem){++++..}, at: [<c10ec9a4>]
dquot_alloc_inode+0x63/0x133

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #3 (&s->s_dquot.dqptr_sem){++++..}:
       [<c10574f2>] __lock_acquire+0x10ad/0x139e
       [<c105787a>] lock_acquire+0x97/0xbb
       [<c1226f90>] down_read+0x31/0x45
       [<c10ec9a4>] dquot_alloc_inode+0x63/0x133
       [<db4bfaec>] ocfs2_mknod+0x728/0xd8c [ocfs2]
       [<db4c01c7>] ocfs2_mkdir+0x77/0xcd [ocfs2]
       [<c10c07a0>] vfs_mkdir+0x66/0xc9
       [<c10c2622>] sys_mkdirat+0x7f/0xba
       [<c10c2672>] sys_mkdir+0x15/0x17
       [<c1228035>] syscall_call+0x7/0xb

-> #2 (jbd2_handle){+.+...}:
       [<c10574f2>] __lock_acquire+0x10ad/0x139e
       [<c105787a>] lock_acquire+0x97/0xbb
       [<dae858fb>] start_this_handle+0x370/0x38f [jbd2]
       [<dae85a8c>] jbd2_journal_start+0xa5/0xd1 [jbd2]
       [<db4b78b5>] ocfs2_start_trans+0xa5/0x178 [ocfs2]
       [<db4dcb5f>] ocfs2_modify_bh+0x2e/0x207 [ocfs2]
       [<db4df044>] ocfs2_local_read_info+0x608/0x72c [ocfs2]
       [<c10eb9ff>] vfs_load_quota_inode+0x2a7/0x497
       [<c10ebe22>] vfs_quota_enable+0xdb/0xe8
       [<db4d64be>] ocfs2_enable_quotas+0x82/0x146 [ocfs2]
       [<db4dab18>] ocfs2_fill_super+0x149f/0x1759 [ocfs2]
       [<c10bb071>] get_sb_bdev+0xf3/0x130
       [<db4d5d31>] ocfs2_get_sb+0x18/0x1a [ocfs2]
       [<c10ba0f2>] vfs_kern_mount+0x53/0xb4
       [<c10ba1a2>] do_kern_mount+0x38/0xc2
       [<c10cd3f9>] do_mount+0x66c/0x6cb
       [<c10cd4be>] sys_mount+0x66/0x94
       [<c1228035>] syscall_call+0x7/0xb

-> #1 (&journal->j_trans_barrier){.+.+..}:
       [<c10574f2>] __lock_acquire+0x10ad/0x139e
       [<c105787a>] lock_acquire+0x97/0xbb
       [<c1226f90>] down_read+0x31/0x45
       [<db4b78ab>] ocfs2_start_trans+0x9b/0x178 [ocfs2]
       [<db4e10b1>] ocfs2_global_read_dquot+0x163/0x265 [ocfs2]
       [<db4dda2b>] ocfs2_local_read_dquot+0x73/0xb42 [ocfs2]
       [<c10e99a4>] dquot_acquire+0x51/0xde
       [<db4e1949>] ocfs2_acquire_dquot+0x8c/0xee [ocfs2]
       [<c10eb1e9>] dqget+0x293/0x2cb
       [<c10eb67f>] __dquot_initialize+0x7c/0x155
       [<c10ebed4>] dquot_initialize+0x10/0x12
       [<db4bee9a>] ocfs2_get_init_inode+0xdf/0xe9 [ocfs2]
       [<db4bf71c>] ocfs2_mknod+0x358/0xd8c [ocfs2]
       [<db4c01c7>] ocfs2_mkdir+0x77/0xcd [ocfs2]
       [<c10c07a0>] vfs_mkdir+0x66/0xc9
       [<c10c2622>] sys_mkdirat+0x7f/0xba
       [<c10c2672>] sys_mkdir+0x15/0x17
       [<c1228035>] syscall_call+0x7/0xb

-> #0 (&s->s_dquot.dqio_mutex){+.+...}:
       [<c1057241>] __lock_acquire+0xdfc/0x139e
       [<c105787a>] lock_acquire+0x97/0xbb
       [<c1226ad7>] mutex_lock_nested+0x3f/0x275
       [<c10e980f>] dquot_commit+0x26/0xc8
       [<db4e085c>] ocfs2_write_dquot+0x108/0x167 [ocfs2]
       [<db4e1523>] ocfs2_mark_dquot_dirty+0xc4/0x28f [ocfs2]
       [<c10eca34>] dquot_alloc_inode+0xf3/0x133
       [<db4bfaec>] ocfs2_mknod+0x728/0xd8c [ocfs2]
       [<db4c01c7>] ocfs2_mkdir+0x77/0xcd [ocfs2]
       [<c10c07a0>] vfs_mkdir+0x66/0xc9
       [<c10c2622>] sys_mkdirat+0x7f/0xba
       [<c10c2672>] sys_mkdir+0x15/0x17
       [<c1228035>] syscall_call+0x7/0xb

other info that might help us debug this:

7 locks held by tar/2546:
 #0:  (&sb->s_type->i_mutex_key#13/1){+.+.+.}, at: [<c10bffd4>]
lookup_create+0x23/0x7f
 #1:  (&ocfs2_sysfile_lock_key[args->fi_sysfile_type]#2){+.+.+.}, at:
[<db4d43e9>] ocfs2_reserve_suballoc_bits+0x102/0xe09 [ocfs2]
 #2:  (&ocfs2_sysfile_lock_key[args->fi_sysfile_type]#5){+.+.+.}, at:
[<db4d43e9>] ocfs2_reserve_suballoc_bits+0x102/0xe09 [ocfs2]
 #3:  (&ocfs2_sysfile_lock_key[args->fi_sysfile_type]#6){+.+...}, at:
[<db4b86d6>] ocfs2_reserve_local_alloc_bits+0x100/0xe49 [ocfs2]
 #4:  (&journal->j_trans_barrier){.+.+..}, at: [<db4b78ab>]
ocfs2_start_trans+0x9b/0x178 [ocfs2]
 #5:  (jbd2_handle){+.+...}, at: [<dae858b8>]
start_this_handle+0x32d/0x38f [jbd2]
 #6:  (&s->s_dquot.dqptr_sem){++++..}, at: [<c10ec9a4>]
dquot_alloc_inode+0x63/0x133

stack backtrace:
Pid: 2546, comm: tar Not tainted 2.6.34-rc1-kvm #179
Call Trace:
 [<c122540b>] ? printk+0x14/0x19
 [<c1056000>] print_circular_bug+0x90/0x9c
 [<c1057241>] __lock_acquire+0xdfc/0x139e
 [<db4b7845>] ? ocfs2_start_trans+0x35/0x178 [ocfs2]
 [<c105787a>] lock_acquire+0x97/0xbb
 [<c10e980f>] ? dquot_commit+0x26/0xc8
 [<c1226ad7>] mutex_lock_nested+0x3f/0x275
 [<c10e980f>] ? dquot_commit+0x26/0xc8
 [<c10e980f>] dquot_commit+0x26/0xc8
 [<db4e085c>] ocfs2_write_dquot+0x108/0x167 [ocfs2]
 [<db4e1523>] ocfs2_mark_dquot_dirty+0xc4/0x28f [ocfs2]
 [<c10eca34>] dquot_alloc_inode+0xf3/0x133
 [<db4bfaec>] ocfs2_mknod+0x728/0xd8c [ocfs2]
 [<db4c01c7>] ocfs2_mkdir+0x77/0xcd [ocfs2]
 [<c10c07a0>] vfs_mkdir+0x66/0xc9
 [<db4c0150>] ? ocfs2_mkdir+0x0/0xcd [ocfs2]
 [<c10c2622>] sys_mkdirat+0x7f/0xba
 [<c10a51ac>] ? handle_mm_fault+0x56a/0x57d
 [<c1049bb6>] ? up_read+0x1b/0x31
 [<c122806e>] ? restore_all_notrace+0x0/0x18
 [<c10c2672>] sys_mkdir+0x15/0x17
 [<c1228035>] syscall_call+0x7/0xb


-- 

"All alone at the end of the evening
 When the bright lights have faded to blue.
 I was thinking about a woman who had loved me
 And I never knew"

Joel Becker
Principal Software Developer
Oracle
E-mail: joel.becker at oracle.com
Phone: (650) 506-8127



More information about the Ocfs2-devel mailing list