NextBSD/src 23dcf48sys/ufs/ffs ffs_vnops.c

Add FFS pager, which uses buffer cache read operation to validate pages.
See the comments for more detailed description of the algorithm.

The pager is used unconditionally when the block size of the
underlying device is larger than the machine page size, since local
vnode pager cannot handle the configuration [1].  Otherwise, the
vfs.ffs.use_buf_pager sysctl allows to switch to the local pager.

Measurements demonstrated no regression in the ever-important
buildworld benchmark, and small (~5%) throughput improvements in the
special microbenchmark configuration for dbench over swap-backed
md(4).

Code can be generalized and reused for other filesystems which use
buffer cache.

Reported by:    Anton Yuzhaninov <citrin at citrin.ru> [1]
Tested by:      pho
Benchmarked by: mjg, pho
Reviewed by:    alc, markj, mckusick (previous version)
Sponsored by:   The FreeBSD Foundation
MFC after:      2 weeks
Differential revision:  https://reviews.freebsd.org/D8198
DeltaFile
+168-4sys/ufs/ffs/ffs_vnops.c
+168-41 files

UnifiedSplitRaw