kernel - More buffer cache / VM coherency work
* Add a buffer offset argument to nvtruncbuf(). The truncation length and
blocksize for the block containing the truncation point alone are
insufficient since prior blocks might be using a different blocksize.
* Add a buffer offset argument to nvnode_pager_setsize() for the same
reason.
* nvtruncbuf() and nvextendbuf() now bdwrite() the buffer being zero-filled.
This fixes a race where the clean buffer might be discarded and read
from the medias pre-truncation backing store again before the filesystem
has a chance to adjust it.
* nvextendbuf() now takes additional arguments. The block offset for the
old and new blocks must be passed.
* Convert UFS over to the use nv*() API, hopefully solving any remaining
fsx VM/BUF coherency issues.
* Correct bugs with swap_burst_read mode, but leave the mode disabled.
There are still unresolved issues when the mode is enabled.
(Reported-by: YONETANI Tomokazu <qhwt+dfly@les.ath.cx>)
* Fix a bug in vm_prefault() which would leak VM pages, eventually
causing the machine to run out of memory.