summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2025-02-12 01:07:50 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2025-02-12 01:09:45 +0100
commit3ed8522bd0fe6e4b06130ec5219ee5775716485b (patch)
tree64c37e31284a0cf6f74503447b025c2ab6d627a6
parent07f78f7000400bd9d2b3a9f665e7cdfea0cd3df9 (diff)
Revert "vm_page: Keep evicting out pages with external pager"
This reverts commit 07f78f7000400bd9d2b3a9f665e7cdfea0cd3df9. Using double_paging is not only about insisting on triggering more evictions, but also about page being non-NULL and thus following a different codepath.
-rw-r--r--vm/vm_page.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/vm/vm_page.c b/vm/vm_page.c
index fc1207ca..44573b10 100644
--- a/vm/vm_page.c
+++ b/vm/vm_page.c
@@ -1096,7 +1096,6 @@ vm_page_seg_evict(struct vm_page_seg *seg, boolean_t external_only,
boolean_t reclaim, double_paging;
vm_object_t object;
boolean_t was_active;
- boolean_t internal;
page = NULL;
object = NULL;
@@ -1170,9 +1169,9 @@ restart:
assert(!page->laundry);
assert(!(double_paging && page->external));
- internal = object->internal || memory_manager_default_port(object->pager);
- if (internal || !alloc_paused ||
- ! IP_VALID(memory_manager_default)) {
+ if (object->internal || !alloc_paused ||
+ ! IP_VALID(memory_manager_default) ||
+ memory_manager_default_port(object->pager)) {
double_paging = FALSE;
} else {
double_paging = page->laundry = TRUE;
@@ -1222,8 +1221,7 @@ out:
vm_pageout_page(page, FALSE, TRUE); /* flush it */
vm_object_unlock(object);
- if (!internal && alloc_paused) {
- /* We have only told external pager, continue evicting. */
+ if (double_paging) {
goto restart;
}