Subject: kern/32338: NFS locks up hard, UVM problem?
To: None <kern-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: None <reinoud@NetBSD.org>
List: netbsd-bugs
Date: 12/19/2005 13:55:00
>Number: 32338
>Category: kern
>Synopsis: NFS locks up hard, UVM problem?
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: kern-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Mon Dec 19 13:55:00 +0000 2005
>Originator: Reinoud Zandijk
>Release: NetBSD 3.99.14 client / NetBSD 2.99.16 server
>Organization:
NetBSD
>Environment:
Server: NetBSD/Sparc, 2.01 userland (AFAIK)
Client: NetBSD/i386, 2.10 userland
Architecture: i386
Machine: i386
>Description:
Client machine seems to work fine but when doing a `make depend' in a
source directory over NFS it first waits on `[netio]' but never ends. When
listing the directory on a different shell i get a wait on '[vnlock]' or
'[nfssrvlock]'. This continues forever.
Since the 2nd shell is waiting on a vnlock, i suspect the problem is in
directory reading code of NFSv3 on the client side.
Note that on the same kernel (though with UDF support enabled), i get weird
behaviour when globbing directories too: It starts with a normal directory
read, correctly reissues the VOP_READDIR with the correct offsets but at
the end when i signal the eof and don't copy in anything anymore (and non
glob operations finish correctly) i get a spurious VOP_READDIR call with a
wierd offset that i never returned; like it sets back the offset a hundred
bytes or so. The UDF code then returns an error for it detects a broken
directory entry.
Is the NFSv3 code getting that spurious VOP_READDIR call too with a wierd
cookie and offset and gets completely confused or doesn't respond correctly
on the NFS server's response?
>How-To-Repeat:
For me, execute a `makedep *.c' on a NFSv3 mounted directory and it hangs.
>Fix:
Explicitly mount with NFS version 2 i.e. `mount_nfs -2'. This won't lock up
the machine anymore.