freebsd-dev/sys/nfs
Doug Rabson f438ae02f5 Improve the queuing algorithms used by NFS' asynchronous i/o. The
existing mechanism uses a global queue for some buffers and the
vp->b_dirtyblkhd queue for others.  This turns sequential writes into
randomly ordered writes to the server, affecting both read and write
performance.  The existing mechanism also copes badly with hung
servers, tending to block accesses to other servers when all the iods
are waiting for a hung server.

The new mechanism uses a queue for each mount point.  All asynchronous
i/o goes through this queue which preserves the ordering of requests.
A simple mechanism ensures that the iods are shared out fairly between
active mount points.  This removes the sysctl variable vfs.nfs.dwrite
since the new queueing mechanism removes the old delayed write code
completely.

This should go into the 2.2 branch.
1996-11-06 10:53:16 +00:00
..
nfs_bio.c Improve the queuing algorithms used by NFS' asynchronous i/o. The 1996-11-06 10:53:16 +00:00
nfs_common.c Improve the queuing algorithms used by NFS' asynchronous i/o. The 1996-11-06 10:53:16 +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 Improve the queuing algorithms used by NFS' asynchronous i/o. The 1996-11-06 10:53:16 +00:00
nfs_syscalls.c Improve the queuing algorithms used by NFS' asynchronous i/o. The 1996-11-06 10:53:16 +00:00
nfs_vfsops.c Improve the queuing algorithms used by NFS' asynchronous i/o. The 1996-11-06 10:53:16 +00:00
nfs_vnops.c Improve the queuing algorithms used by NFS' asynchronous i/o. The 1996-11-06 10:53:16 +00:00
nfs.h Improve the queuing algorithms used by NFS' asynchronous i/o. The 1996-11-06 10:53:16 +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 Improve the queuing algorithms used by NFS' asynchronous i/o. The 1996-11-06 10:53:16 +00:00
nfsnode.h Improve the queuing algorithms used by NFS' asynchronous i/o. The 1996-11-06 10:53:16 +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