]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
MFC revision 1.231
authoralc <alc@FreeBSD.org>
Sat, 25 Aug 2007 19:14:30 +0000 (19:14 +0000)
committeralc <alc@FreeBSD.org>
Sat, 25 Aug 2007 19:14:30 +0000 (19:14 +0000)
commit0370ed6aac2f6062217225a6cbf605e62d5b603c
tree6c9787c514c269c69ee08e76a128027e9e8366ef
parent0ad15f74a45f125ae1175da4a2ac6cfbc7ac74f9
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
  occurs.

  The fix implemented herein is to adjust the pointer to the array of pages
  rather than shifting the pages within the array.
sys/vm/vnode_pager.c