]> CyberLeo.Net >> Repos - FreeBSD/stable/8.git/commit
MFC: r222389
authorrmacklem <rmacklem@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Fri, 10 Jun 2011 13:28:14 +0000 (13:28 +0000)
committerrmacklem <rmacklem@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Fri, 10 Jun 2011 13:28:14 +0000 (13:28 +0000)
commit33ae3d4cc35b52a767b1a349a8f016e97c1e8746
treede65bf815c4d4ca8e3710addfcbe8e6c36cef244
parent4819104db27f3f6a937dd9d24ef545903b62fb71
MFC: r222389
Fix the new NFS client so that it handles NFSv4 state
correctly during a forced dismount. This required that
the exclusive and shared (refcnt) sleep lock functions check
for MNTK_UMOUNTF before sleeping, so that they won't block
while nfscl_umount() is getting rid of the state. As
such, a "struct mount *" argument was added to the locking
functions. I believe the only remaining case where a forced
dismount can get hung in the kernel is when a thread is
already attempting to do a TCP connect to a dead server
when the krpc client structure called nr_client is NULL.
This will only happen just after a "mount -u" with options
that force a new TCP connection is done, so it shouldn't
be a problem in practice.

git-svn-id: svn://svn.freebsd.org/base/stable/8@222931 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/fs/nfs/nfs_commonsubs.c
sys/fs/nfs/nfs_var.h
sys/fs/nfsclient/nfs_clcomsubs.c
sys/fs/nfsclient/nfs_clstate.c
sys/fs/nfsserver/nfs_nfsdsocket.c
sys/fs/nfsserver/nfs_nfsdstate.c