Author: glebius
Date: Wed Jan 4 22:31:09 2017
New Revision: 311338
URL: https://svnweb.freebsd.org/changeset/base/311338
Log:
Fix assertion that checks that pages are consecutive to properly
handle bogus_page insertion(s).
Modified:
head/sys/vm/vnode_pager.c
Modified: head/sys/vm/vnode_pager.c
==============================================================================
--- head/sys/vm/vnode_pager.c Wed Jan 4 22:29:00 2017 (r311337)
+++ head/sys/vm/vnode_pager.c Wed Jan 4 22:31:09 2017 (r311338)
@@ -974,10 +974,14 @@ vnode_pager_generic_getpages(struct vnod
#ifdef INVARIANTS
KASSERT(bp->b_npages <= nitems(bp->b_pages),
("%s: buf %p overflowed", __func__, bp));
- for (int j = 1; j < bp->b_npages; j++)
- KASSERT(bp->b_pages[j]->pindex - 1 ==
- bp->b_pages[j - 1]->pindex,
- ("%s: pages array not consecutive, bp %p", __func__, bp));
+ for (int j = 1, prev = 1; j < bp->b_npages; j++) {
+ if (bp->b_pages[j] == bogus_page)
+ continue;
+ KASSERT(bp->b_pages[j]->pindex - bp->b_pages[prev]->pindex ==
+ j - prev, ("%s: pages array not consecutive, bp %p",
+ __func__, bp));
+ prev = j;
+ }
#endif
/*
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"