git: kernel - More buffer cache / VM coherency work

看板DFBSD_commit作者時間16年前 (2010/01/27 05:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
commit 3bb7eedbfb632673b651e472b042d7ae92334bb5 Author: Matthew Dillon <dillon@apollo.backplane.com> Date: Tue Jan 26 12:41:03 2010 -0800 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. Summary of changes: sys/kern/vfs_vm.c | 84 +++++++++++++++++++++++++++++-------------- sys/sys/vnode.h | 8 +++-- sys/vfs/nfs/nfs_bio.c | 5 ++- sys/vfs/nfs/nfs_subs.c | 2 +- sys/vfs/ufs/ffs_inode.c | 42 +++++++++++++--------- sys/vfs/ufs/fs.h | 6 +++ sys/vfs/ufs/ufs_lookup.c | 3 +- sys/vfs/ufs/ufs_readwrite.c | 8 +++- sys/vfs/ufs/ufs_vnops.c | 2 +- sys/vm/swap_pager.c | 21 +++++------ sys/vm/vm_fault.c | 19 ++++++++-- 11 files changed, 132 insertions(+), 68 deletions(-) http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/3bb7eedbfb632673b651e472b042d7ae92334bb5 -- DragonFly BSD source repository
文章代碼(AID): #1BNrWKPK (DFBSD_commit)
文章代碼(AID): #1BNrWKPK (DFBSD_commit)