[nfs] process locks in "bo_wwait" on 6.4



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
_______________________________________________
freebsd-stable@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "freebsd-stable-unsubscribe@xxxxxxxxxxx"



Relevant Pages

  • Re: [nfs] process locks in "bo_wwait" on 6.4
    ... iface on NFS server has mtu changed from 1500 to 1450. ... Tracing pid 37581 tid 100364 td 0xc93c7b60 ... db> show lockedvnods ... Process 37888 (umount) at 0xc949e000: ...
    (freebsd-stable)
  • Re: [nfs] process locks in "bo_wwait" on 6.4
    ... iface on NFS server has mtu changed from 1500 to 1450. ... Setting mtu 1500 on NFS server side network interface fixes the issue. ... Tracing pid 37581 tid 100364 td 0xc93c7b60 ... db> show lockedvnods ...
    (freebsd-stable)
  • Re: panic: vm_fault_copy_wired: page missing
    ... KDB: enter: panic ... Stopped at kdb_enter+0x3d: movq $0,0x68f170 ... Tracing pid 1013 tid 100106 td 0xffffff0007a66ae0 ... so I don't think NFS is the problem. ...
    (freebsd-stable)