freebsd-nq/sys/nfs
Doug Rabson f31dba4c5d This fixes a problem with the nfs socket handling code which happens
if a single process is performing a large number of requests (in this
case writing a large file).  The writing process could monopolise the
recieve lock and prevent any other processes from recieving their
replies.

It also adds a new sysctl variable 'vfs.nfs.dwrite' which controls the
behaviour which originally pointed out the problem.  When a process
writes to a file over NFS, it usually arranges for another process
(the 'iod') to perform the request.  If no iods are available, then it
turns the write into a 'delayed write' which is later picked up by the
next iod to do a write request for that file.  This can cause that
particular iod to do a disproportionate number of requests from a
single process which can harm performance on some NFS servers.  The
alternative is to perform the write synchronously in the context of
the original writing process if no iod is avaiable for asynchronous
writing.

The 'delayed write' behaviour is selected when vfs.nfs.dwrite=1 and
the non-delayed behaviour is selected when vfs.nfs.dwrite=0.  The
default is vfs.nfs.dwrite=1; if many people tell me that performance
is better if vfs.nfs.dwrite=0 then I will change the default.

Submitted by:	Hidetoshi Shimokawa <simokawa@sat.t.u-tokyo.ac.jp>
1996-10-11 10:15:33 +00:00
..
nfs_bio.c This fixes a problem with the nfs socket handling code which happens 1996-10-11 10:15:33 +00:00
nfs_common.c In sys/time.h, struct timespec is defined as: 1996-09-19 18:21:32 +00:00
nfs_common.h In sys/time.h, struct timespec is defined as: 1996-09-19 18:21:32 +00:00
nfs_node.c Moved the fsnode MALLOC to before the call to getnewvnode() so that the 1996-06-12 03:37:57 +00:00
nfs_nqlease.c Even though this looks like it, this is not a complex code change. 1996-08-21 21:56:23 +00:00
nfs_serv.c In sys/time.h, struct timespec is defined as: 1996-09-19 18:21:32 +00:00
nfs_socket.c This fixes a problem with the nfs socket handling code which happens 1996-10-11 10:15:33 +00:00
nfs_srvcache.c Add an option NFS_NOSERVER which saves 100K in the install kernel (or 1996-01-13 23:27:58 +00:00
nfs_subs.c In sys/time.h, struct timespec is defined as: 1996-09-19 18:21:32 +00:00
nfs_syscalls.c #include <sys/filedesc.h> explicitly instead of depending on it being 1996-04-30 23:26:52 +00:00
nfs_vfsops.c removed: 1996-05-02 14:21:14 +00:00
nfs_vnops.c In sys/time.h, struct timespec is defined as: 1996-09-19 18:21:32 +00:00
nfs.h Even though this looks like it, this is not a complex code change. 1996-08-21 21:56:23 +00:00
nfsdiskless.h Changes to support version 3 of the NFS protocol. 1995-06-27 11:07:30 +00:00
nfsm_subs.h In sys/time.h, struct timespec is defined as: 1996-09-19 18:21:32 +00:00
nfsmount.h Staticize. 1995-12-17 21:14:36 +00:00
nfsnode.h Staticize. 1995-12-17 21:14:36 +00:00
nfsproto.h Changes to support version 3 of the NFS protocol. 1995-06-27 11:07:30 +00:00
nfsrtt.h Changes to support version 3 of the NFS protocol. 1995-06-27 11:07:30 +00:00
nfsrvcache.h Changes to support version 3 of the NFS protocol. 1995-06-27 11:07:30 +00:00
nfsv2.h Changes to support version 3 of the NFS protocol. 1995-06-27 11:07:30 +00:00
nqnfs.h Staticize. 1995-12-17 21:14:36 +00:00
rpcv2.h Changes to support version 3 of the NFS protocol. 1995-06-27 11:07:30 +00:00
xdr_subs.h In sys/time.h, struct timespec is defined as: 1996-09-19 18:21:32 +00:00