diff options
-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; } |