DragonFly commits List (threaded) for 2007-08
cvs commit: src/sys/vm vnode_pager.c
dillon 2007/08/13 10:18:16 PDT
DragonFly src repository
Replace the huge mess that was vnode_pager_generic_getpages() with a much
simpler version which does a UIO_NOCOPY VOP_READ. This version requires
that all VREG file I/O pass through the buffer cache. All filesystems
which use this function already use the buffer cache.
* specfs rolls its own for device mmaps.
* NFS rolls its own.
* UFS rolls its own by backs down to this function in certain cases.
* Remaining filesystems call this function and use the buffer cache (ext2,
hpfs, isofs, msdosfs, ntfs, nwfs, smbfs), and are compatible.
Buffer cache side effects properly set the valid bits in the vm_page_t
and vm_faults in DragonFly are now responsible for zero-filling mapped VM
pages, so the vnode_pager*() code no longer has to do this.
The vnode_pager*() code was previously using getpbuf() and pmap_qenter() and
friends which is almost as expensive as instantiating a new buffer cache
buffer. The vnode_pager*() code also previously ran a manual BMAP whereas
the buffer cache may already have a cached translation available.
Revision Changes Path
1.36 +69 -420 src/sys/vm/vnode_pager.c