Hammer: processes blocked on a file
Matthew Dillon
dillon at apollo.backplane.com
Wed Jul 30 10:03:04 PDT 2008
:It occured to me once again. I've uploaded vmcore and kernel to my
:crash/ directory.
:
:It seems that the vnode is (dead-) locked and trying to access it (e.g.
:typing a "ls" in that directory) blocks that process as well.
:
:Regards,
:
: Michael
I've examined both your crash dump and Francois's crash dump. Both
reveal the same bug.
What is happening is that the processes are stuck waiting for a
HAMMER inode which has a dependancy to flush, but HAMMER has lost
track of the dependancy so the process winds up waiting forever.
(kgdb) back
#0 0xc02cce63 in lwkt_switch ()
#1 0xc02d0d13 in tsleep (ident=0xe1552814, flags=0, wmesg=0xc05432fc "hmrwin", timo=0)
#2 0xc042eeba in hammer_wait_inode (ip=0xe15527d0)
#3 0xc0440e89 in hammer_vop_fsync (ap=0xe112cc88)
#4 0xc0316162 in vop_fsync (ops=0xc5cc6f30, vp=0xe15a27a8, waitfor=1)
#5 0xc03144be in sys_fsync (uap=0xe112ccf0)
#6 0xc04d1e62 in syscall2 (frame=0xe112cd40)
(kgdb) print ip->flush_state
$1 = HAMMER_FST_SETUP <--- means there is stuff on target_list
(kgdb) print ip->target_list
$2 = {
tqh_first = 0x0, <--- except the target_list is empty!
tqh_last = 0xe15527f0
}
(kgdb)
I will commit a fix today to both HEAD and 2.0. It will need some
continuing testing since it is fairly hard to reproduce, to make sure
I actually fixed it the right place.
Thank you both!
-Matt
Matthew Dillon
<dillon at backplane.com>
More information about the Bugs
mailing list