diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2025-02-12 01:07:50 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2025-02-12 01:09:45 +0100 |
commit | 3ed8522bd0fe6e4b06130ec5219ee5775716485b (patch) | |
tree | 64c37e31284a0cf6f74503447b025c2ab6d627a6 | |
parent | 07f78f7000400bd9d2b3a9f665e7cdfea0cd3df9 (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.c | 10 |
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; } |