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
nfs_srvsock.c
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
nfsrvcache.h
nfsrvstats.h