freebsd-nq/sys/fs
John Baldwin 574862c8ba Enhance the sequential access heuristic used to perform readahead in the
NFS server and reuse it for writes as well to allow writes to the backing
store to be clustered.
- Use a prime number for the size of the heuristic table (1017 is not
  prime).
- Move the logic to locate a heuristic entry from the table and compute
  the sequential count out of VOP_READ() and into a separate routine.
- Use the logic from sequential_heuristic() in vfs_vnops.c to update the
  seqcount when a sequential access is performed rather than just
  increasing seqcount by 1.  This lets the clustering count ramp up
  faster.
- Allow for some reordering of RPCs and if it is detected leave the current
  seqcount as-is rather than dropping back to a seqcount of 1.  Also,
  when out of order access is encountered, cut seqcount in half rather than
  dropping it all the way back to 1 to further aid with reordering.
- Fix the new NFS server to properly update the next offset after a
  successful VOP_READ() so that the readahead actually works.

Some of these changes came from an earlier patch by Bjorn Gronwall that was
forwarded to me by bde@.

Discussed with:	bde, rmacklem, fs@
Submitted by:	Bjorn Gronwall (1, 4)
MFC after:	2 weeks
2011-12-01 18:46:28 +00:00
..
cd9660 This update changes the mnt_flag field in the mount structure from 2011-07-24 17:43:09 +00:00
coda Second-to-last commit implementing Capsicum capabilities in the FreeBSD 2011-08-11 12:30:23 +00:00
deadfs Add function vop_rename_fail(9) that performs needed cleanup for locks 2010-04-02 14:03:01 +00:00
devfs Existing VOP_VPTOCNP() interface has a fatal flow that is critical for 2011-11-19 07:50:49 +00:00
ext2fs Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
fdescfs Second-to-last commit implementing Capsicum capabilities in the FreeBSD 2011-08-11 12:30:23 +00:00
fifofs Add the fo_chown and fo_chmod methods to struct fileops and use them 2011-08-16 20:07:47 +00:00
hpfs Add a lock flags argument to the VFS_FHTOVP() file system 2011-05-22 01:07:54 +00:00
msdosfs Put all the messages from msdosfs under the MSDOSFS_DEBUG ifdef. 2011-11-22 13:30:36 +00:00
nfs Add two arguments to the nfsrpc_rellockown() function in the NFSv4 2011-11-20 16:46:50 +00:00
nfsclient Rename vm_page_set_valid() to vm_page_set_valid_range(). 2011-11-30 17:39:00 +00:00
nfsserver Enhance the sequential access heuristic used to perform readahead in the 2011-12-01 18:46:28 +00:00
ntfs Add unicode support to ntfs 2011-11-27 15:43:49 +00:00
nullfs Existing VOP_VPTOCNP() interface has a fatal flow that is critical for 2011-11-19 07:50:49 +00:00
nwfs Rename vm_page_set_valid() to vm_page_set_valid_range(). 2011-11-30 17:39:00 +00:00
portalfs Trace attempts to open a portal device. 2011-10-18 07:31:49 +00:00
procfs In procfs_doproccmdline() if arguments are not cashed read them from 2011-11-22 20:43:03 +00:00
pseudofs Existing VOP_VPTOCNP() interface has a fatal flow that is critical for 2011-11-19 07:50:49 +00:00
smbfs Rename vm_page_set_valid() to vm_page_set_valid_range(). 2011-11-30 17:39:00 +00:00
tmpfs Avoid panics from recursive rename operations. Not a perfect patch but 2011-11-22 16:18:12 +00:00
udf Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs. 2011-11-07 06:44:47 +00:00
unionfs Make unionfs also clear VAPPEND when clearing VWRITE, since VAPPEND 2011-10-10 21:32:08 +00:00