Subject: kern/34775: processes accessing union mounts stuck in vnlock
To: None <kern-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: Denis Lagno <dlagno@rambler.ru>
List: netbsd-bugs
Date: 10/10/2006 22:10:01
>Number:         34775
>Category:       kern
>Synopsis:       processes accessing union mounts stuck in vnlock
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Oct 10 22:10:00 +0000 2006
>Originator:     Denis Lagno
>Release:        NetBSD 4.99.3
>Organization:
SWsoft
>Environment:
System: NetBSD flam.gado 4.99.3 NetBSD 4.99.3 (FLAM) #0: Tue Sep 26 21:12:59 MSD 2006 dina@flam.gado:/volatile/worksrc/netbsd-current/obj/sys/arch/i386/compile/FLAM i386
Architecture: i386
Machine: i386
hw.ncpu = 2

>Description:
I have following lines in /etc/fstab:
# cat /etc/fstab | grep union | grep netbsd
/var/src/repo/netbsd-current/src                        /var/worksrc/netbsd-current/src                                                                         union   rw,noauto,-b                                                                                                    0       0
/var/src/repo/netbsd-current/xsrc                       /var/worksrc/netbsd-current/xsrc                                                                        union   rw,noauto,-b                                                                                                    0       0

Initially /var/worksrc/netbsd-current/*src are empty and /var/src/repo/netbsd-current/*src contain netbsd snapshot.
I mount them from user:

$ mount /var/worksrc/netbsd-current/src
$ mount /var/worksrc/netbsd-current/xsrc

then start build.

Sometimes all goes ok.  However, two times I encountered lockup during the build.
It happened with different -currents.

# ps axl | grep nbmake | grep -v grep
1025  4649  6309 64137  -2  0   172   772 vnlock   D    ttyp8  0:00.01 /flam/var/worksrc/netbsd-current/tools/bin/nbmake -V .OBJDIR 
1025 13044     1 64137  -2  0   176   776 vnlock   D    ttyp8  0:00.03 /flam/var/worksrc/netbsd-current/tools/bin/nbmake _THISDIR_=x11/Xserver/h
1025 17785     1 67198  -2  0   528  1252 vnlock   D    ttyp8  0:00.10 /flam/var/worksrc/netbsd-current/tools/bin/nbmake _THISDIR_ obj 
1025 22940  6600 64137  -2  0   176   776 vnlock   D    ttyp8  0:00.04 /flam/var/worksrc/netbsd-current/tools/bin/nbmake -V .OBJDIR 
1025 24413     1 64137  -2  0   172   772 vnlock   D    ttyp8  0:00.01 /flam/var/worksrc/netbsd-current/tools/bin/nbmake _THISDIR_=x11/Xserver/h

They cannot be killed:

# pgrep nbmake                       
4649
22940
13044
24413
17785
# pkill -9 nbmake
# pgrep nbmake   
4649
22940
13044
24413
17785

>How-To-Repeat:
stress test union mounts on SMP system

>Fix:
N/A