2010-11-23 15:49:27

by Spelic

[permalink] [raw]
Subject: Bug: sync's hangup forever in call_rwsem_down_read_failed

Hi there
on 2.6.37-rc2 I was doing some speed tests. I had just unmounted various
arrays, recreated them differently with mdadm assume-clean, and then I
was formatting all of them:

# for i in /dev/md10* ; do echo $i ; time mkfs.ext4 -m0 $i ; time sync ;
done
/dev/md101
mke2fs 1.41.9 (22-Aug-2009)
/dev/md101 is apparently in use by the system; will not make a
filesystem here!

real 0m0.038s
user 0m0.000s
sys 0m0.000s

Here I was pretty sure the error message was wrong: md101 was not in use
by the system anyhow, and was not mounted. I had just created it.
Anyway the subsequent sync hanged!

# cat /proc/7686/stack
[<ffffffff8129e894>] call_rwsem_down_read_failed+0x14/0x30
[<ffffffff81137ff1>] iterate_supers+0x71/0xf0
[<ffffffff8115d92b>] sync_filesystems+0x1b/0x20
[<ffffffff8115da32>] sys_sync+0x12/0x40
[<ffffffff8100af42>] system_call_fastpath+0x16/0x1b
[<ffffffffffffffff>] 0xffffffffffffffff

After a while I tried to launch another sync, from another shell; that
hanged identically.

/proc# grep call_rwsem */stack
7686/stack:[<ffffffff8129e894>]
call_rwsem_down_read_failed+0x14/0x30
7714/stack:[<ffffffff8129e894>]
call_rwsem_down_read_failed+0x14/0x30
(this shows only the two syncs)

Then I tried to shut it down with poweroff -f (which does sync) and that
hanged again

/proc# grep rwsem */stack
7686/stack:[<ffffffff8129e894>]
call_rwsem_down_read_failed+0x14/0x30
7714/stack:[<ffffffff8129e894>]
call_rwsem_down_read_failed+0x14/0x30
7815/stack:[<ffffffff8129e894>]
call_rwsem_down_read_failed+0x14/0x30

so I shut it down with poweroff -n -f ; that worked.

It seems to me some process did not reset the semaphore after having
finished (= resource leak)

Sorry for not being able to help you much more than this as I have reset
the computer now, but this is another guy reporting apparently the same
problem on Ubuntu 10.10 kernel (I was on vanilla 2.6.37-rc2)
http://www.mail-archive.com/[email protected]/msg2579131.html

My dmesg never notified about the problem, in something like 5minutes, btw.

If you reply, please reply also to me as I am not subsribed to
linuk-kernel .
Thanks for your work