Bug 645877 - possible circular locking at dquot_commit
Summary: possible circular locking at dquot_commit
Keywords:
Status: CLOSED INSUFFICIENT_DATA
Alias: None
Product: Fedora
Classification: Fedora
Component: kernel
Version: rawhide
Hardware: Unspecified
OS: Unspecified
low
medium
Target Milestone: ---
Assignee: Kernel Maintainer List
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2010-10-22 18:18 UTC by Zing
Modified: 2012-05-01 13:18 UTC (History)
6 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2012-05-01 13:18:20 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)
full dmesg (34.47 KB, text/plain)
2010-10-22 18:18 UTC, Zing
no flags Details

Description Zing 2010-10-22 18:18:31 UTC
Created attachment 455155 [details]
full dmesg

Description of problem:

I get this on bootup:

[    6.484586] =======================================================
[    6.485258] [ INFO: possible circular locking dependency detected ]
[    6.485258] 2.6.36-1.fc15.x86_64 #1
[    6.485258] -------------------------------------------------------
[    4.661615]   alloc irq_desc for 42 on node -1
[    4.661617]   alloc kstat_irqs on node -1
[    4.661644] virtio-pci 0000:00:05.0: irq 42 for MSI/MSI-X
[    5.463956] ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 11
[    5.466630] ENS1370 0000:00:06.0: PCI INT A -> Link[LNKB] -> GSI 11 (level, high) -> IRQ
 11
[    5.474537] ENS1370 0000:00:06.0: setting latency timer to 64
[    6.119327] EXT4-fs (dm-0): re-mounted. Opts: user_xattr,usrjquota=aquota.user,jqfmt=vfs
v0
[    6.294279] EXT4-fs (vda3): mounted filesystem with ordered data mode. Opts: (null)
[    6.484584] 
[    6.484586] =======================================================
[    6.485258] [ INFO: possible circular locking dependency detected ]
[    6.485258] 2.6.36-1.fc15.x86_64 #1
[    6.485258] -------------------------------------------------------
[    6.485258] dd/653 is trying to acquire lock:
[    6.485258]  (&s->s_dquot.dqio_mutex){+.+...}, at: [<ffffffff81171479>] dquot_commit+0x2b/0xdf
[    6.485258] 
[    6.485258] but task is already holding lock:
[    6.485258]  (&s->s_dquot.dqptr_sem){++++..}, at: [<ffffffff81173ff7>] __dquot_free_space+0x6b/0x170
[    6.485258] 
[    6.485258] which lock already depends on the new lock.
[    6.485258] 
[    6.485258] 
[    6.485258] the existing dependency chain (in reverse order) is:
[    6.485258] 
[    6.485258] -> #2 (&s->s_dquot.dqptr_sem){++++..}:
[    6.485258]        [<ffffffff8107ffdf>] lock_acquire+0xd2/0xfd
[    6.485258]        [<ffffffff8149c096>] down_read+0x51/0x84
[    6.485258]        [<ffffffff81173ff7>] __dquot_free_space+0x6b/0x170
[    6.485258]        [<ffffffff811c4256>] dquot_free_block+0x1e/0x2f
[    6.485258]        [<ffffffff811c9ec9>] ext4_free_blocks+0x6b0/0x77f
[    6.485258]        [<ffffffff811c1d1f>] ext4_ext_truncate+0x395/0x7ee
[    6.485258]        [<ffffffff811a7ad2>] ext4_truncate+0xa4/0x516
[    6.485258]        [<ffffffff810ed620>] vmtruncate+0x44/0x4f
[    6.485258]        [<ffffffff811a8908>] ext4_setattr+0x30c/0x390
[    6.485258]        [<ffffffff8113fcee>] notify_change+0x1a6/0x2a6
[    6.485258]        [<ffffffff81129a9e>] do_truncate+0x6c/0x89
[    6.485258]        [<ffffffff81136c54>] do_last+0x5aa/0x5af
[    6.485258]        [<ffffffff81136e89>] do_filp_open+0x230/0x5e1
[    6.485258]        [<ffffffff8112a531>] do_sys_open+0x60/0xfc
[    6.485258]        [<ffffffff8112a5ed>] sys_open+0x20/0x22
[    6.485258]        [<ffffffff81009cf2>] system_call_fastpath+0x16/0x1b
[    6.485258] 
[    6.485258] -> #1 (&ei->i_data_sem){++++..}:
[    6.485258]        [<ffffffff8107ffdf>] lock_acquire+0xd2/0xfd
[    6.485258]        [<ffffffff8149c096>] down_read+0x51/0x84
[    6.485258]        [<ffffffff811a6f6e>] ext4_map_blocks+0x43/0x213
[    6.485258]        [<ffffffff811a78ca>] ext4_getblk+0x5b/0x159
[    6.485258]        [<ffffffff811a79de>] ext4_bread+0x16/0x66
[    6.485258]        [<ffffffff811b6447>] ext4_quota_read+0x8b/0xf5
[    6.485258]        [<ffffffff811748ca>] v2_read_header+0x23/0x54
[    6.485258]        [<ffffffff81174da4>] v2_read_file_info+0x25/0x1fd
[    6.485258]        [<ffffffff8117370a>] vfs_load_quota_inode+0x29e/0x4ab
[    6.485258]        [<ffffffff81173b21>] dquot_quota_on_path+0x51/0x58
[    6.485258]        [<ffffffff811b6b78>] ext4_quota_on+0x128/0x17a
[    6.485258]        [<ffffffff8117653e>] do_quotactl+0x1d0/0x464
[    6.485258]        [<ffffffff811768c7>] sys_quotactl+0xf5/0x112
[    6.485258]        [<ffffffff81009cf2>] system_call_fastpath+0x16/0x1b
[    6.485258] 
[    6.485258] -> #0 (&s->s_dquot.dqio_mutex){+.+...}:
[    6.485258]        [<ffffffff8107f80b>] __lock_acquire+0xa80/0xd79
[    6.485258]        [<ffffffff8107ffdf>] lock_acquire+0xd2/0xfd
[    6.485258]        [<ffffffff8149b812>] __mutex_lock_common+0x4c/0x35b
[    6.485258]        [<ffffffff8149bbe5>] mutex_lock_nested+0x3e/0x43
[    6.485258]        [<ffffffff81171479>] dquot_commit+0x2b/0xdf
[    6.485258]        [<ffffffff811b84e2>] ext4_write_dquot+0x64/0x86
[    6.485258]        [<ffffffff811b8547>] ext4_mark_dquot_dirty+0x43/0x4e
[    6.485258]        [<ffffffff811710c3>] mark_all_dquot_dirty+0x27/0x4d
[    6.485258]        [<ffffffff811740ca>] __dquot_free_space+0x13e/0x170
[    6.485258]        [<ffffffff811c4256>] dquot_free_block+0x1e/0x2f
[    6.485258]        [<ffffffff811c9ec9>] ext4_free_blocks+0x6b0/0x77f
[    6.485258]        [<ffffffff811c1d1f>] ext4_ext_truncate+0x395/0x7ee
[    6.485258]        [<ffffffff811a7ad2>] ext4_truncate+0xa4/0x516
[    6.485258]        [<ffffffff810ed620>] vmtruncate+0x44/0x4f
[    6.485258]        [<ffffffff811a8908>] ext4_setattr+0x30c/0x390
[    6.485258]        [<ffffffff8113fcee>] notify_change+0x1a6/0x2a6
[    6.485258]        [<ffffffff81129a9e>] do_truncate+0x6c/0x89
[    6.485258]        [<ffffffff81136c54>] do_last+0x5aa/0x5af
[    6.485258]        [<ffffffff81136e89>] do_filp_open+0x230/0x5e1
[    6.485258]        [<ffffffff8112a531>] do_sys_open+0x60/0xfc
[    6.485258]        [<ffffffff8112a5ed>] sys_open+0x20/0x22
[    6.485258]        [<ffffffff81009cf2>] system_call_fastpath+0x16/0x1b
[    6.485258] 
[    6.485258] other info that might help us debug this:
[    6.485258] 
[    6.485258] 5 locks held by dd/653:
[    6.485258]  #0:  (&sb->s_type->i_mutex_key#12){+.+.+.}, at: [<ffffffff81129a92>] do_truncate+0x60/0x89
[    6.485258]  #1:  (&sb->s_type->i_alloc_sem_key#5){+.+...}, at: [<ffffffff8113fcd6>] notify_change+0x18e/0x2a6
[    6.485258]  #2:  (jbd2_handle){+.+...}, at: [<ffffffff811d60e0>] start_this_handle+0x64[    6.485258]  #3:  (&ei->i_data_sem){++++..}, at: [<ffffffff811c1a1b>] ext4_ext_truncate+0x91/0x7ee
[    6.485258]  #4:  (&s->s_dquot.dqptr_sem){++++..}, at: [<ffffffff81173ff7>] __dquot_free_space+0x6b/0x170
[    6.485258] 
[    6.485258] stack backtrace:
[    6.485258] Pid: 653, comm: dd Not tainted 2.6.36-1.fc15.x86_64 #1
[    6.485258] Call Trace:
[    6.485258]  [<ffffffff8107e13b>] print_circular_bug+0xa8/0xb7
[    6.485258]  [<ffffffff8107f80b>] __lock_acquire+0xa80/0xd79
[    6.485258]  [<ffffffff81171479>] ? dquot_commit+0x2b/0xdf
[    6.485258]  [<ffffffff8107ffdf>] lock_acquire+0xd2/0xfd
[    6.485258]  [<ffffffff81171479>] ? dquot_commit+0x2b/0xdf
[    6.485258]  [<ffffffff8102d215>] ? pvclock_clocksource_read+0x48/0xb1
[    6.485258]  [<ffffffff81171479>] ? dquot_commit+0x2b/0xdf
[    6.485258]  [<ffffffff8149b812>] __mutex_lock_common+0x4c/0x35b
[    6.485258]  [<ffffffff81171479>] ? dquot_commit+0x2b/0xdf
[    6.485258]  [<ffffffff8107258d>] ? sched_clock_local+0x12/0x75
[    6.485258]  [<ffffffff8107c809>] ? trace_hardirqs_off+0xd/0xf
[    6.485258]  [<ffffffff8149bbe5>] mutex_lock_nested+0x3e/0x43
[    6.485258]  [<ffffffff81171479>] dquot_commit+0x2b/0xdf
[    6.485258]  [<ffffffff811b84e2>] ext4_write_dquot+0x64/0x86
[    6.485258]  [<ffffffff811b8547>] ext4_mark_dquot_dirty+0x43/0x4e
[    6.485258]  [<ffffffff811710c3>] mark_all_dquot_dirty+0x27/0x4d
[    6.485258]  [<ffffffff811740ca>] __dquot_free_space+0x13e/0x170
[    6.485258]  [<ffffffff811c4256>] dquot_free_block+0x1e/0x2f
[    6.485258]  [<ffffffff811c9ec9>] ext4_free_blocks+0x6b0/0x77f
[    6.485258]  [<ffffffff8107275e>] ? local_clock+0x36/0x4d
[    6.485258]  [<ffffffff811c1d1f>] ext4_ext_truncate+0x395/0x7ee
[    6.485258]  [<ffffffff8107c809>] ? trace_hardirqs_off+0xd/0xf
[    6.485258]  [<ffffffff8107ff01>] ? lock_release+0x19a/0x1a6
[    6.485258]  [<ffffffff811a7ad2>] ext4_truncate+0xa4/0x516
[    6.485258]  [<ffffffff810fd22a>] ? unmap_mapping_range+0x227/0x236
[    6.485258]  [<ffffffff8111b974>] ? kmem_cache_free+0xca/0x110
[    6.485258]  [<ffffffff810ed620>] vmtruncate+0x44/0x4f
[    6.485258]  [<ffffffff811a8908>] ext4_setattr+0x30c/0x390
[    6.485258]  [<ffffffff8113fcee>] notify_change+0x1a6/0x2a6
[    6.485258]  [<ffffffff81129a9e>] do_truncate+0x6c/0x89
[    6.485258]  [<ffffffff81133ca9>] ? get_write_access+0x4e/0x55
[    6.485258]  [<ffffffff81136c54>] do_last+0x5aa/0x5af
[    6.485258]  [<ffffffff81246491>] ? __raw_spin_lock_init+0x31/0x50
[    6.485258]  [<ffffffff81136e89>] do_filp_open+0x230/0x5e1
[    6.485258]  [<ffffffff8102c730>] ? kvm_clock_read+0x1c/0x1e
[    6.485258]  [<ffffffff8107275e>] ? local_clock+0x36/0x4d
[    6.485258]  [<ffffffff8107ff01>] ? lock_release+0x19a/0x1a6
[    6.485258]  [<ffffffff81140e16>] ? alloc_fd+0x16a/0x17c
[    6.485258]  [<ffffffff8112a531>] do_sys_open+0x60/0xfc
[    6.485258]  [<ffffffff8149cb0d>] ? trace_hardirqs_on_thunk+0x3a/0x3f
[    6.485258]  [<ffffffff8112a5ed>] sys_open+0x20/0x22
[    6.485258]  [<ffffffff81009cf2>] system_call_fastpath+0x16/0x1b
[    6.884845] dd used greatest stack depth: 3688 bytes left

Version-Release number of selected component (if applicable):
kernel-2.6.36-1.fc15.x86_64

How reproducible:
It happens on bootup.

Steps to Reproduce:
1. Not sure how to reproduce, but I do have quotas enabled on ext4.
  
Actual results:
above lockdep warning

Expected results:
no lockdep warning

Additional info:

Comment 1 Dave Jones 2012-02-06 17:40:14 UTC
pretty old bug.  still happening with latest kernels ?


Note You need to log in before you can comment on or make changes to this bug.