2.6.33.3: possible recursive locking detected

From: CaT
Date: Tue May 04 2010 - 04:13:05 EST


I'm currently running 2.6.33.3 in a KVM instance emulating a core2duo
on 1 cpu with virtio HDs running on top of a core2duo host running 2.6.33.3.
qemu-kvm version 0.12.3. When doing:

echo noop >/sys/block/vdd/queue/scheduler

I got:

[ 1424.438241] =============================================
[ 1424.439588] [ INFO: possible recursive locking detected ]
[ 1424.440368] 2.6.33.3-moocow.20100429-142641 #2
[ 1424.440960] ---------------------------------------------
[ 1424.440960] bash/2186 is trying to acquire lock:
[ 1424.440960] (s_active){++++.+}, at: [<ffffffff811046b8>] sysfs_remove_dir+0x75/0x88
[ 1424.440960]
[ 1424.440960] but task is already holding lock:
[ 1424.440960] (s_active){++++.+}, at: [<ffffffff81104849>] sysfs_get_active_two+0x1f/0x46
[ 1424.440960]
[ 1424.440960] other info that might help us debug this:
[ 1424.440960] 4 locks held by bash/2186:
[ 1424.440960] #0: (&buffer->mutex){+.+.+.}, at: [<ffffffff8110317f>] sysfs_write_file+0x39/0x126
[ 1424.440960] #1: (s_active){++++.+}, at: [<ffffffff81104849>] sysfs_get_active_two+0x1f/0x46
[ 1424.440960] #2: (s_active){++++.+}, at: [<ffffffff81104856>] sysfs_get_active_two+0x2c/0x46
[ 1424.440960] #3: (&q->sysfs_lock){+.+.+.}, at: [<ffffffff8119c3f0>] queue_attr_store+0x44/0x85
[ 1424.440960]
[ 1424.440960] stack backtrace:
[ 1424.440960] Pid: 2186, comm: bash Not tainted 2.6.33.3-moocow.20100429-142641 #2
[ 1424.440960] Call Trace:
[ 1424.440960] [<ffffffff8105e775>] __lock_acquire+0xf9f/0x178e
[ 1424.440960] [<ffffffff8100d3ec>] ? save_stack_trace+0x2a/0x48
[ 1424.440960] [<ffffffff8105b46c>] ? lockdep_init_map+0x9f/0x52f
[ 1424.440960] [<ffffffff8105b46c>] ? lockdep_init_map+0x9f/0x52f
[ 1424.440960] [<ffffffff8105cb56>] ? trace_hardirqs_on+0xd/0xf
[ 1424.440960] [<ffffffff8105f02e>] lock_acquire+0xca/0xef
[ 1424.440960] [<ffffffff811046b8>] ? sysfs_remove_dir+0x75/0x88
[ 1424.440960] [<ffffffff8110458d>] sysfs_addrm_finish+0xc8/0x13a
[ 1424.440960] [<ffffffff811046b8>] ? sysfs_remove_dir+0x75/0x88
[ 1424.440960] [<ffffffff8105cb25>] ? trace_hardirqs_on_caller+0x110/0x134
[ 1424.440960] [<ffffffff811046b8>] sysfs_remove_dir+0x75/0x88
[ 1424.440960] [<ffffffff811ab312>] kobject_del+0x16/0x37
[ 1424.440960] [<ffffffff81195489>] elv_iosched_store+0x10a/0x214
[ 1424.440960] [<ffffffff8119c416>] queue_attr_store+0x6a/0x85
[ 1424.440960] [<ffffffff81103237>] sysfs_write_file+0xf1/0x126
[ 1424.440960] [<ffffffff810b747f>] vfs_write+0xae/0x14a
[ 1424.440960] [<ffffffff810b75df>] sys_write+0x47/0x6e
[ 1424.440960] [<ffffffff81002202>] system_call_fastpath+0x16/0x1b

Original scheduler was cfq.

Having rebooted and defaulted to noop I tried

echo noop >/sys/block/vdd/queue/scheduler

and got:

[ 311.294464] =============================================
[ 311.295820] [ INFO: possible recursive locking detected ]
[ 311.296603] 2.6.33.3-moocow.20100429-142641 #2
[ 311.296833] ---------------------------------------------
[ 311.296833] bash/2190 is trying to acquire lock:
[ 311.296833] (s_active){++++.+}, at: [<ffffffff81104630>] remove_dir+0x31/0x39
[ 311.296833]
[ 311.296833] but task is already holding lock:
[ 311.296833] (s_active){++++.+}, at: [<ffffffff81104849>] sysfs_get_active_two+0x1f/0x46
[ 311.296833]
[ 311.296833] other info that might help us debug this:
[ 311.296833] 4 locks held by bash/2190:
[ 311.296833] #0: (&buffer->mutex){+.+.+.}, at: [<ffffffff8110317f>] sysfs_write_file+0x39/0x126
[ 311.296833] #1: (s_active){++++.+}, at: [<ffffffff81104849>] sysfs_get_active_two+0x1f/0x46
[ 311.296833] #2: (s_active){++++.+}, at: [<ffffffff81104856>] sysfs_get_active_two+0x2c/0x46
[ 311.296833] #3: (&q->sysfs_lock){+.+.+.}, at: [<ffffffff8119c3f0>] queue_attr_store+0x44/0x85
[ 311.296833]
[ 311.296833] stack backtrace:
[ 311.296833] Pid: 2190, comm: bash Not tainted 2.6.33.3-moocow.20100429-142641 #2
[ 311.296833] Call Trace:
[ 311.296833] [<ffffffff8105e775>] __lock_acquire+0xf9f/0x178e
[ 311.296833] [<ffffffff8105b46c>] ? lockdep_init_map+0x9f/0x52f
[ 311.296833] [<ffffffff8105b46c>] ? lockdep_init_map+0x9f/0x52f
[ 311.296833] [<ffffffff8105cb56>] ? trace_hardirqs_on+0xd/0xf
[ 311.296833] [<ffffffff8105f02e>] lock_acquire+0xca/0xef
[ 311.296833] [<ffffffff81104630>] ? remove_dir+0x31/0x39
[ 311.296833] [<ffffffff8110458d>] sysfs_addrm_finish+0xc8/0x13a
[ 311.296833] [<ffffffff81104630>] ? remove_dir+0x31/0x39
[ 311.296833] [<ffffffff8105cb25>] ? trace_hardirqs_on_caller+0x110/0x134
[ 311.296833] [<ffffffff81104630>] remove_dir+0x31/0x39
[ 311.296833] [<ffffffff811046c0>] sysfs_remove_dir+0x7d/0x88
[ 311.296833] [<ffffffff811ab312>] kobject_del+0x16/0x37
[ 311.296833] [<ffffffff81195489>] elv_iosched_store+0x10a/0x214
[ 311.296833] [<ffffffff8119c416>] queue_attr_store+0x6a/0x85
[ 311.296833] [<ffffffff81103237>] sysfs_write_file+0xf1/0x126
[ 311.296833] [<ffffffff810b747f>] vfs_write+0xae/0x14a
[ 311.296833] [<ffffffff810b75df>] sys_write+0x47/0x6e
[ 311.296833] [<ffffffff81002202>] system_call_fastpath+0x16/0x1b

Changing back to noop (or, in the initial case to cfq) did not
reproduce the message.

This does not happen when the elevator is explicitly set on bootup as
part of the kernel's commandline. Compiled-in default is cfq.

--
"A search of his car uncovered pornography, a homemade sex aid, women's
stockings and a Jack Russell terrier."
- http://www.news.com.au/story/0%2C27574%2C24675808-421%2C00.html
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/