[nfs] process locks in "bo_wwait" on 6.4

pluknet pluknet at gmail.com
Fri Jun 26 16:44:32 UTC 2009


Hello.

While building a module on nfs mounted /usr/src
I got an unkillable process waiting forever in bo_wwait.

# make
Warning: Object directory not changed from original /usr/src/sys/modules/linux
@ -> /usr/src/sys
machine -> /usr/src/sys/i386/include
cc -c -O2 -fno-strict-aliasing -pipe -Werror -D_KERNEL -DKLD_MODULE
-nostdinc -I- -I. -I@ -I@/contrib/altq -I@/../include -I/usr/include
-finline-limit=8000 -mno-align-long-strings
-mpreferred-stack-boundary=2 -mno-mmx -mno-3dnow -mno-sse -mno-sse2
-ffreestanding -Wall -Wredundant-decls -Wnested-externs
-Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline
-Wcast-qual -fformat-extensions -std=c99
/usr/src/sys/modules/linux/../../i386/linux/linux_genassym.c
sh @/kern/genassym.sh linux_genassym.o > linux_assym.h
echo "#define COMPAT_43 1" > opt_compat.h
echo "#define INET6 1" > opt_inet6.h
:> opt_mac.h
:> opt_vmpage.h
awk -f @/tools/vnode_if.awk @/kern/vnode_if.src -p
load: 1.08  cmd: awk 37581 [bo_wwait] 0.00u 0.00s 0% 1472k

All others subsystems seems to work.

db> bt 37581
Tracing pid 37581 tid 100364 td 0xc93c7b60
sched_switch(c93c7b60,0,1) at sched_switch+0x143
mi_switch(1,0,c93c7b60,eed95a24,c06ce6f0,...) at mi_switch+0x1ba
sleepq_switch(ce138854) at sleepq_switch+0x87
sleepq_wait(ce138854,0,c93c7b60,ce138830,0,...) at sleepq_wait+0x5c
msleep(ce138854,ce1387ec,4d,c096823e,0) at msleep+0x269
bufobj_wwait(ce138830,0,0,0,ce1387ec,...) at bufobj_wwait+0x37
nfs_flush(ce138770,1,c93c7b60,0,c93c7b60,...) at nfs_flush+0x8c8
nfs_close(eed95b80) at nfs_close+0xfd
VOP_CLOSE_APV(c09ec5c0,eed95b80) at VOP_CLOSE_APV+0x38
vn_close(ce138770,2,cd769100,c93c7b60) at vn_close+0x5a
vn_closefile(c9094900,c93c7b60) at vn_closefile+0xea
fdrop_locked(c9094900,c93c7b60,cf054600,eed95ca8,c06875f3,...) at
fdrop_locked+0xd0
fdrop(c9094900,c93c7b60,c93c7b60,eed95c64,1,...) at fdrop+0x41
closef(c9094900,c93c7b60,0,eed95d38,c949ea78,...) at closef+0x42f
kern_close(c93c7b60,3,eed95d30,c08e1d4b,c93c7b60,...) at kern_close+0x20d
close(c93c7b60,eed95d04) at close+0x10
syscall(3b,808003b,bfbf003b,0,28190a20,...) at syscall+0x2bf
Xint0x80_syscall() at Xint0x80_syscall+0x1f
--- syscall (6, FreeBSD ELF32, close), eip = 0x2816c1e7, esp =
0xbfbfeb1c, ebp = 0xbfbfeb38 ---
db> show lockedvnods
Locked vnodes

0xce138770: tag nfs, type VREG
    usecount 1, writecount 0, refcount 3 mountedhere 0
    flags ()
    v_object 0xcd0a2528 ref 0 pages 1
     lock type nfs: EXCL (count 1) by thread 0xc93c7b60 (pid 37581)
        fileid 1372174 fsid 0x100ff05
db> show lockedbufs
buf at 0xdbf92d08
b_flags = 0x20000024<vmio,cache,async>
b_error = 0, b_bufsize = 2048, b_bcount = 1779, b_resid = 0
b_bufobj = (0xce138830), b_data = 0xe2e99000, b_blkno = 0
b_npages = 1, pages(OBJ, IDX, PA): (0xcd0a2528, 0x0, 0xa8067000)

db> show proc 37581
Process 37581 (awk) at 0xc949ea78:
 state: NORMAL
 uid: 0  gids: 0, 0, 2, 3, 4, 5, 20, 31
 parent: pid 37557 at 0xc949e860
 ABI: FreeBSD ELF32
 arguments: awk
 threads: 1
100364                   D       bo_wwait 0xce138854 awk

Next.

# umount /usr/src
load: 0.36  cmd: umount 37888 [nfs] 0.00u 0.04s 0% 900k

db> bt 37888
Tracing pid 37888 tid 100130 td 0xc93c84e0
sched_switch(c93c84e0,0,1) at sched_switch+0x143
mi_switch(1,0,c93c84e0,eeda4aa0,c06ce6f0,...) at mi_switch+0x1ba
sleepq_switch(ce1387c8) at sleepq_switch+0x87
sleepq_wait(ce1387c8,0,c93c84e0,ce1387c8,4,...) at sleepq_wait+0x5c
msleep(ce1387c8,c0a4af54,50,c09729b5,0,...) at msleep+0x269
acquire(eeda4b20,40,60000,c93c84e0,0,...) at acquire+0x7b
lockmgr(ce1387c8,2002,ce1387ec,c93c84e0,eeda4b44,...) at lockmgr+0x3fe
vop_stdlock(eeda4b68) at vop_stdlock+0x1e
VOP_LOCK_APV(c09ec5c0,eeda4b68) at VOP_LOCK_APV+0x43
vn_lock(ce138770,2002,c93c84e0) at vn_lock+0xf4
vflush(cf4f8cf8,1,0,c93c84e0) at vflush+0x136
nfs_unmount(cf4f8cf8,8000000,c93c84e0) at nfs_unmount+0x3c
dounmount(cf4f8cf8,8000000,c93c84e0) at dounmount+0x3fa
unmount(c93c84e0,eeda4d04) at unmount+0x279
syscall(3b,3b,3b,804a4aa,804de10,...) at syscall+0x2bf
Xint0x80_syscall() at Xint0x80_syscall+0x1f
--- syscall (22, FreeBSD ELF32, unmount), eip = 0x280be967, esp =
0xbfbfe56c, ebp = 0xbfbfe618 ---
db> show lockedvnods
Locked vnodes

0xca176aa0: tag ufs, type VDIR
    usecount 1, writecount 0, refcount 1 mountedhere 0xcf4f8cf8
    flags ()
    v_object 0xcb111294 ref 0 pages 0
     lock type ufs: EXCL (count 1) by thread 0xc93c84e0 (pid 37888)
        ino 1436672, on dev aacd0s1f

0xce138770: tag nfs, type VREG
    usecount 1, writecount 0, refcount 4 mountedhere 0
    flags ()
    v_object 0xcd0a2528 ref 0 pages 1
     lock type nfs: EXCL (count 1) by thread 0xc93c7b60 (pid 37581)
with 1 pending
        fileid 1372174 fsid 0x100ff05
db> show lockedbufs
buf at 0xdbf92d08
b_flags = 0x20000024<vmio,cache,async>
b_error = 0, b_bufsize = 2048, b_bcount = 1779, b_resid = 0
b_bufobj = (0xce138830), b_data = 0xe2e99000, b_blkno = 0
b_npages = 1, pages(OBJ, IDX, PA): (0xcd0a2528, 0x0, 0xa8067000)
db> show proc 37888
Process 37888 (umount) at 0xc949e000:
 state: NORMAL
 uid: 0  gids: 0, 0, 2, 3, 4, 5, 20, 31
 parent: pid 37812 at 0xc936ea78
 ABI: FreeBSD ELF32
 arguments: umount
 threads: 1
100130                   D       nfs      0xce1387c8 umount


-- 
wbr,
pluknet


More information about the freebsd-stable mailing list