On Fri, 22 Oct 2010 16:36:58 PDT, akpm@linux-foundation.org said: > The mm-of-the-moment snapshot 2010-10-22-16-36 has been uploaded to > > http://userweb.kernel.org/~akpm/mmotm/ I turned on quotas on some ext4 filesystems, and the next boot, shortly after the 'quotaon -a', I got: [ 40.163251] ======================================================= [ 40.163558] [ INFO: possible circular locking dependency detected ] [ 40.164019] 2.6.36-mmotm1022 #3 [ 40.164019] ------------------------------------------------------- [ 40.164019] dd/2915 is trying to acquire lock: [ 40.164019] (&s->s_dquot.dqio_mutex){+.+...}, at: [] dquot_commit+0x26/0xda [ 40.164019] [ 40.164019] but task is already holding lock: [ 40.164019] (&s->s_dquot.dqptr_sem){++++..}, at: [] __dquot_free_space+0x66/0x16b [ 40.164019] [ 40.164019] which lock already depends on the new lock. [ 40.164019] [ 40.164019] [ 40.164019] the existing dependency chain (in reverse order) is: [ 40.164019] [ 40.164019] -> #2 (&s->s_dquot.dqptr_sem){++++..}: [ 40.164019] [] lock_acquire+0x100/0x126 [ 40.164019] [] down_read+0x42/0x51 [ 40.164019] [] __dquot_free_space+0x66/0x16b [ 40.164019] [] dquot_free_block+0x19/0x2a [ 40.164019] [] ext4_free_blocks+0x7eb/0x8a2 [ 40.164019] [] ext4_ext_truncate+0x3af/0x853 [ 40.164019] [] ext4_truncate+0x98/0x51a [ 40.164019] [] vmtruncate+0x3f/0x4b [ 40.164019] [] ext4_setattr+0x313/0x397 [ 40.164019] [] notify_change+0x1a1/0x2a1 [ 40.164019] [] do_truncate+0x67/0x84 [ 40.164019] [] do_last+0x4c6/0x5a6 [ 40.164019] [] do_filp_open+0x252/0x655 [ 40.164019] [] do_sys_open+0x60/0x101 [ 40.164019] [] sys_open+0x1b/0x1d [ 40.164019] [] system_call_fastpath+0x16/0x1b [ 40.164019] [ 40.164019] -> #1 (&ei->i_data_sem){++++..}: [ 40.164019] [] lock_acquire+0x100/0x126 [ 40.164019] [] down_read+0x42/0x51 [ 40.164019] [] ext4_map_blocks+0x3e/0x20e [ 40.164019] [] ext4_getblk+0x71/0x19b [ 40.164019] [] ext4_bread+0x11/0x61 [ 40.164019] [] ext4_quota_read+0x86/0xf0 [ 40.164019] [] v2_read_header+0x1e/0x4f [ 40.164019] [] v2_read_file_info+0x20/0x2ae [ 40.164019] [] vfs_load_quota_inode+0x295/0x44b [ 40.164019] [] dquot_quota_on_path+0x4c/0x55 [ 40.164019] [] ext4_quota_on+0x123/0x175 [ 40.164019] [] do_quotactl+0x1d1/0x465 [ 40.164019] [] sys_quotactl+0xfd/0x11a [ 40.164019] [] system_call_fastpath+0x16/0x1b [ 40.164019] [ 40.164019] -> #0 (&s->s_dquot.dqio_mutex){+.+...}: [ 40.164019] [] __lock_acquire+0xa53/0xd55 [ 40.164019] [] lock_acquire+0x100/0x126 [ 40.164019] [] __mutex_lock_common+0x5d/0x56c [ 40.164019] [] mutex_lock_nested+0x34/0x39 [ 40.164019] [] dquot_commit+0x26/0xda [ 40.164019] [] ext4_write_dquot+0x65/0x87 [ 40.164019] [] ext4_mark_dquot_dirty+0x3e/0x49 [ 40.164019] [] mark_all_dquot_dirty+0x22/0x48 [ 40.164019] [] __dquot_free_space+0x139/0x16b [ 40.164019] [] dquot_free_block+0x19/0x2a [ 40.164019] [] ext4_free_blocks+0x7eb/0x8a2 [ 40.164019] [] ext4_ext_truncate+0x3af/0x853 [ 40.164019] [] ext4_truncate+0x98/0x51a [ 40.164019] [] vmtruncate+0x3f/0x4b [ 40.164019] [] ext4_setattr+0x313/0x397 [ 40.164019] [] notify_change+0x1a1/0x2a1 [ 40.684030] [] do_truncate+0x67/0x84 [ 40.684030] [] do_last+0x4c6/0x5a6 [ 40.684030] [] do_filp_open+0x252/0x655 [ 40.684030] [] do_sys_open+0x60/0x101 [ 40.684030] [] sys_open+0x1b/0x1d [ 40.684030] [] system_call_fastpath+0x16/0x1b [ 40.684030] [ 40.684030] other info that might help us debug this: [ 40.684030] [ 40.684030] 5 locks held by dd/2915: [ 40.684030] #0: (&sb->s_type->i_mutex_key#13){+.+.+.}, at: [] do_truncate+0x5b/0x84 [ 40.684030] #1: (&sb->s_type->i_alloc_sem_key#5){+.+...}, at: [] notify_change+0x189/0x2a1 [ 40.684030] #2: (jbd2_handle){+.+...}, at: [] start_this_handle+0x57a/0x605 [ 40.684030] #3: (&ei->i_data_sem){++++..}, at: [] ext4_ext_truncate+0x91/0x853 [ 40.684030] #4: (&s->s_dquot.dqptr_sem){++++..}, at: [] __dquot_free_space+0x66/0x16b [ 40.684030] [ 40.684030] stack backtrace: [ 40.684030] Pid: 2915, comm: dd Not tainted 2.6.36-mmotm1022 #3 [ 40.684030] Call Trace: [ 40.684030] [] print_circular_bug+0xa8/0xb7 [ 40.684030] [] __lock_acquire+0xa53/0xd55 [ 40.684030] [] ? dquot_commit+0x26/0xda [ 40.684030] [] lock_acquire+0x100/0x126 [ 40.684030] [] ? dquot_commit+0x26/0xda [ 40.684030] [] __mutex_lock_common+0x5d/0x56c [ 40.684030] [] ? dquot_commit+0x26/0xda [ 40.684030] [] ? dquot_mark_dquot_dirty+0x27/0x7a [ 40.684030] [] ? dquot_commit+0x26/0xda [ 40.684030] [] mutex_lock_nested+0x34/0x39 [ 40.684030] [] dquot_commit+0x26/0xda [ 40.684030] [] ext4_write_dquot+0x65/0x87 [ 40.684030] [] ext4_mark_dquot_dirty+0x3e/0x49 [ 40.684030] [] mark_all_dquot_dirty+0x22/0x48 [ 40.684030] [] __dquot_free_space+0x139/0x16b [ 40.684030] [] dquot_free_block+0x19/0x2a [ 40.684030] [] ext4_free_blocks+0x7eb/0x8a2 [ 40.684030] [] ? jbd2_journal_extend+0x5d/0xb8 [ 40.684030] [] ext4_ext_truncate+0x3af/0x853 [ 40.684030] [] ? trace_preempt_on+0x15/0x28 [ 40.684030] [] ? unmap_mapping_range+0x279/0x288 [ 40.684030] [] ext4_truncate+0x98/0x51a [ 40.684030] [] ? unmap_mapping_range+0x279/0x288 [ 40.684030] [] ? trace_hardirqs_on_caller+0x117/0x13b [ 40.684030] [] ? trace_hardirqs_on+0xd/0xf [ 40.684030] [] vmtruncate+0x3f/0x4b [ 40.684030] [] ext4_setattr+0x313/0x397 [ 40.684030] [] notify_change+0x1a1/0x2a1 [ 40.684030] [] do_truncate+0x67/0x84 [ 40.684030] [] ? get_write_access+0x49/0x50 [ 40.684030] [] ? _raw_spin_unlock+0x30/0x69 [ 40.684030] [] ? sub_preempt_count+0x35/0x48 [ 40.684030] [] ? security_path_truncate+0x48/0x4d [ 40.684030] [] do_last+0x4c6/0x5a6 [ 40.684030] [] do_filp_open+0x252/0x655 [ 40.684030] [] ? trace_preempt_on+0x15/0x28 [ 40.684030] [] ? alloc_fd+0x17c/0x18e [ 40.684030] [] ? _raw_spin_unlock+0x30/0x69 [ 40.684030] [] ? sub_preempt_count+0x35/0x48 [ 40.684030] [] ? alloc_fd+0x17c/0x18e [ 40.684030] [] do_sys_open+0x60/0x101 [ 40.684030] [] ? trace_hardirqs_on_thunk+0x3a/0x3f [ 40.684030] [] sys_open+0x1b/0x1d [ 40.684030] [] system_call_fastpath+0x16/0x1b