kernel - More buffer cache / VM coherency work
authorMatthew Dillon <dillon@apollo.backplane.com>
Tue, 26 Jan 2010 20:41:03 +0000 (12:41 -0800)
committerMatthew Dillon <dillon@apollo.backplane.com>
Tue, 26 Jan 2010 20:41:03 +0000 (12:41 -0800)
commit3bb7eedbfb632673b651e472b042d7ae92334bb5
tree4bd7ef6a8fd19ce56d957f2e71367143c00b0b6f
parent7948e49e695481d3d884b7d42328bc986c04c1cd
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.
sys/kern/vfs_vm.c
sys/sys/vnode.h
sys/vfs/nfs/nfs_bio.c
sys/vfs/nfs/nfs_subs.c
sys/vfs/ufs/ffs_inode.c
sys/vfs/ufs/fs.h
sys/vfs/ufs/ufs_lookup.c
sys/vfs/ufs/ufs_readwrite.c
sys/vfs/ufs/ufs_vnops.c
sys/vm/swap_pager.c
sys/vm/vm_fault.c