freebsd-src/sys/fs
Bruce Evans 416e232cc6 Fix clobbering of the fatchain cache for clustered i/o's when full
clustering is not done.  The bug caused extreme slowness for large
files in some cases.

There is no way to tell VOP_BMAP() how many blocks are wanted, so for
all file systems it has to waste time in some cases by searching for
more contiguous blocks than will be accessed.  For msdosfs, it also
clobbered the fatchain cache in these cases by advancing the cache to
point to the chain entry for block that won't be read.  This makes
the cache useless for the next sequential i/o (or VOP_BMAP()), so the
fat chain is searched from the beginning.  The cache only has 1 relevant
entry, so it is similarly useless for random i/o.

Fix this by only advancing the cache to point to the chain entry for
the first block that will be read.  Clustering uses results from
VOP_BMAP(), so when more than 1 block is read by clustering, the cache
is not advanced as optimally as before, but it is at most 1 cluster
size behind and searching the chain through the blocks for this cluster
doesn't take too long.
2018-12-21 21:17:45 +00:00
..
autofs Ensure that directory entry padding bytes are zeroed. 2018-11-23 22:24:59 +00:00
cd9660 Ensure that directory entry padding bytes are zeroed. 2018-11-23 22:24:59 +00:00
cuse Use NULL for SYSINIT's last arg, which is a pointer type 2018-05-18 17:58:09 +00:00
deadfs sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
devfs Ensure that directory entry padding bytes are zeroed. 2018-11-23 22:24:59 +00:00
ext2fs Remove unused argument to priv_check_cred. 2018-12-11 19:32:16 +00:00
fdescfs Ensure that directory entry padding bytes are zeroed. 2018-11-23 22:24:59 +00:00
fifofs Rework pathconf handling for FIFOs. 2017-12-19 22:39:05 +00:00
fuse Remove unused argument to priv_check_cred. 2018-12-11 19:32:16 +00:00
msdosfs Fix clobbering of the fatchain cache for clustered i/o's when full 2018-12-21 21:17:45 +00:00
nandfs Remove unused argument to priv_check_cred. 2018-12-11 19:32:16 +00:00
nfs Remove unused argument to priv_check_cred. 2018-12-11 19:32:16 +00:00
nfsclient Make sure the NFS readdir client fills in all "struct dirent" data. 2018-11-23 00:17:47 +00:00
nfsserver Fix the NFSv4 server to obey vfs.nfsd.nfs_privport. 2018-12-20 22:21:41 +00:00
nullfs Make it easier for filesystems to count themselves as jail-enabled, 2018-05-04 20:54:27 +00:00
procfs Plug memory disclosures via ptrace(2). 2018-12-03 20:54:17 +00:00
pseudofs Ensure that directory entry padding bytes are zeroed. 2018-11-23 22:24:59 +00:00
smbfs Ensure that directory entry padding bytes are zeroed. 2018-11-23 22:24:59 +00:00
tmpfs Remove unused argument to priv_check_cred. 2018-12-11 19:32:16 +00:00
udf Ensure that directory entry padding bytes are zeroed. 2018-11-23 22:24:59 +00:00
unionfs sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00