summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_reserv.c
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2014-07-24 16:29:44 +0000
committerkib <kib@FreeBSD.org>2014-07-24 16:29:44 +0000
commitd7d6313cf44fa12148b5cee3cb0542287af7a37f (patch)
tree671bf425a15fe4f80c0c080b0d8ce7545ed6f149 /sys/vm/vm_reserv.c
parentbc8d80ff4e8a4a3106923968524f11648f134483 (diff)
downloadFreeBSD-src-d7d6313cf44fa12148b5cee3cb0542287af7a37f.zip
FreeBSD-src-d7d6313cf44fa12148b5cee3cb0542287af7a37f.tar.gz
MFC r267213 (by alc):
Add a page size field to struct vm_page. Approved by: alc
Diffstat (limited to 'sys/vm/vm_reserv.c')
-rw-r--r--sys/vm/vm_reserv.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/sys/vm/vm_reserv.c b/sys/vm/vm_reserv.c
index 6ca5642..7511a33 100644
--- a/sys/vm/vm_reserv.c
+++ b/sys/vm/vm_reserv.c
@@ -229,6 +229,11 @@ vm_reserv_depopulate(vm_reserv_t rv)
if (rv->inpartpopq) {
TAILQ_REMOVE(&vm_rvq_partpop, rv, partpopq);
rv->inpartpopq = FALSE;
+ } else {
+ KASSERT(rv->pages->psind == 1,
+ ("vm_reserv_depopulate: reserv %p is already demoted",
+ rv));
+ rv->pages->psind = 0;
}
rv->popcnt--;
if (rv->popcnt == 0) {
@@ -278,6 +283,8 @@ vm_reserv_populate(vm_reserv_t rv)
("vm_reserv_populate: reserv %p is free", rv));
KASSERT(rv->popcnt < VM_LEVEL_0_NPAGES,
("vm_reserv_populate: reserv %p is already full", rv));
+ KASSERT(rv->pages->psind == 0,
+ ("vm_reserv_populate: reserv %p is already promoted", rv));
if (rv->inpartpopq) {
TAILQ_REMOVE(&vm_rvq_partpop, rv, partpopq);
rv->inpartpopq = FALSE;
@@ -286,7 +293,8 @@ vm_reserv_populate(vm_reserv_t rv)
if (rv->popcnt < VM_LEVEL_0_NPAGES) {
rv->inpartpopq = TRUE;
TAILQ_INSERT_TAIL(&vm_rvq_partpop, rv, partpopq);
- }
+ } else
+ rv->pages->psind = 1;
}
/*
OpenPOWER on IntegriCloud