cvs commit: src/sys/vm vnode_pager.c

Matthew Dillon dillon at crater.dragonflybsd.org
Mon Aug 13 10:18:47 PDT 2007


dillon      2007/08/13 10:18:16 PDT

DragonFly src repository

  Modified files:
    sys/vm               vnode_pager.c 
  Log:
  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


http://www.dragonflybsd.org/cvsweb/src/sys/vm/vnode_pager.c.diff?r1=1.35&r2=1.36&f=u





More information about the Commits mailing list