cvs commit: src/sys/vm vnode_pager.c

Alan Cox alc at
Sat Aug 25 12:14:31 PDT 2007

alc         2007-08-25 19:14:30 UTC

  FreeBSD src repository

  Modified files:        (Branch: RELENG_6)
    sys/vm               vnode_pager.c 
  MFC revision 1.231
    Change vnode_pager_addr() such that on returning it distinguishes between
    an error returned by VOP_BMAP() and a hole in the file.
    Change the callers to vnode_pager_addr() such that they return
    VM_PAGER_ERROR when VOP_BMAP fails instead of a zero-filled page.
  MFC revision 1.232
    Long ago, revision 1.22 of vm/vm_pager.h introduced a bug.  Specifically,
    it introduced a check after the call to file system's get pages method
    that assumes that the get pages method does not change the array of pages
    that is passed to it.  In the case of vnode_pager_generic_getpages(),
    this assumption has been incorrect.  The contents of the array of pages
    may be shifted by vnode_pager_generic_getpages().  Likely, the problem
    has been hidden by vnode_pager_haspage() limiting the set of pages that
    are passed to vnode_pager_generic_getpages() such that a shift never
    The fix implemented herein is to adjust the pointer to the array of pages
    rather than shifting the pages within the array.
  Revision   Changes    Path  +25 -22    src/sys/vm/vnode_pager.c

More information about the cvs-src mailing list