HAMMER update 23-Feb-2008
Matthew Dillon
dillon at apollo.backplane.com
Sun Feb 24 10:55:37 PST 2008
:I've been playing with it, and while it works nice when working on a small
:amount of files, it often locks up(ctrl+T or ctrl+C won't work) during
:a task like this (I've made sure that this has no problem writing on a UFS
:filesystem)
:# cpdup /usr/pkgsrc/. /mnt/HAMMER/.
:
:I added a few kprintf()'s around tsleep()'s and wakeup()'s in
:hammer_subs.c, and I found that it is often the case that it locked up,
:tsleep() won't return (because I didn't see the kprintf() message after it)
:after being woken up by hammer_lock_downgrade(). ctrl+alt+esc mostly
:works, but it takes very long time to drop into DDB once it locked up.
:
:Cheers.
I'll try to reproduce it. You should be able to examine the state
of the downgraded lock... *SHOULD* the tsleep in the other process
have woken up? That is, is the lock in a state where the other
process ought to have been able to acquire it?
I've seen similar effects in the vkernel. The buffer cache deadlocks
trying to allocate a new buffer from inside a locked path and then
cascades. Usually a 'ps axl' shows numerous processes stuck in
'getnewbuf'. I can work around it by doing a 'sync' once a second.
I've separated heavy-weight buffers (buffers which need additional
buffer operations in order to be able to flush them) from light-weight
buffers (buffers which can be flushed directly to disk) and that helped
a lot, but there are still some edge cases.
In anycase, back to the issue you are seeing... if you can get a
kernel.debug/kernel-core onto leaf I should be able to figure it out.
-Matt
Matthew Dillon
<dillon at backplane.com>
More information about the Kernel
mailing list