freebsd-dev/sys/nfsserver
Robert Watson c2a9c542a9 Push Giant a bit further off the NFS server in a number of straight
forward cases by converting from unconditional acquisition of Giant
around vnode operations to conditional acquisition:

- Remove nfsrv_access_withgiant(), and cause nfsrv_access() to now
  assert that Giant will be held if it is required for the vnode.

- Add nfsrv_fhtovp_locked(), which will drop the NFS server lock if
  required, and modify nfsrv_fhtovp() to conditionally acquire
  Giant if required.

- In the VOP's not dealing with more than one vnode at a time (i.e.,
  not involving a lookup), conditionally acquire Giant.

This removes Giant use for MPSAFE file systems for a number of quite
important RPCs, including getattr, read, write.  It leaves
unconditional Giant acquisitions in vnode operations that interact
with the name space or more than one vnode at a time as these
require further work.

Tested by:	kris
Reviewed by:	kib
2006-11-24 11:53:16 +00:00
..
nfs_serv.c Push Giant a bit further off the NFS server in a number of straight 2006-11-24 11:53:16 +00:00
nfs_srvcache.c - Add a new function nfsrv_destroycache() to tear down the server request 2006-08-01 16:27:14 +00:00
nfs_srvsock.c Complete break-out of sys/sys/mac.h into sys/security/mac/mac_framework.h 2006-10-22 11:52:19 +00:00
nfs_srvsubs.c Push Giant a bit further off the NFS server in a number of straight 2006-11-24 11:53:16 +00:00
nfs_syscalls.c Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
nfs.h Push Giant a bit further off the NFS server in a number of straight 2006-11-24 11:53:16 +00:00
nfsm_subs.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
nfsrvcache.h Size the NFS server dupreq cache on the basis of nmbclusters. On servers 2006-06-23 00:42:26 +00:00
nfsrvstats.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00