diff options
Diffstat (limited to 'vm/vm_page.c')
-rw-r--r-- | vm/vm_page.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/vm/vm_page.c b/vm/vm_page.c index 94439b51..92e36a1a 100644 --- a/vm/vm_page.c +++ b/vm/vm_page.c @@ -925,12 +925,6 @@ vm_page_seg_pull_cache_page(struct vm_page_seg *seg, } static boolean_t -vm_page_seg_min_page_available(const struct vm_page_seg *seg) -{ - return (seg->nr_free_pages > seg->min_free_pages); -} - -static boolean_t vm_page_seg_page_available(const struct vm_page_seg *seg) { return (seg->nr_free_pages > seg->high_free_pages); @@ -1099,6 +1093,7 @@ vm_page_seg_evict(struct vm_page_seg *seg, boolean_t external_only, page = NULL; object = NULL; + laundry = FALSE; restart: vm_page_lock_queues(); @@ -1156,6 +1151,7 @@ restart: */ assert(!page->laundry); + assert(!(laundry && page->external)); if (object->internal || !alloc_paused) { laundry = FALSE; @@ -1878,7 +1874,7 @@ vm_page_check_usable(void) } } - vm_page_external_pagedout = -1; + vm_page_external_laundry_count = -1; vm_page_alloc_paused = FALSE; thread_wakeup(&vm_page_alloc_paused); return TRUE; @@ -1980,7 +1976,7 @@ vm_page_evict(boolean_t *should_wait) external_only = TRUE; simple_lock(&vm_page_queue_free_lock); - vm_page_external_pagedout = 0; + vm_page_external_laundry_count = 0; alloc_paused = vm_page_alloc_paused; simple_unlock(&vm_page_queue_free_lock); @@ -2008,7 +2004,7 @@ again: * Keep in mind eviction may not cause pageouts, since non-precious * clean pages are simply released. */ - if ((vm_page_external_pagedout == 0) && (vm_page_laundry_count == 0)) { + if ((vm_page_laundry_count == 0) && (vm_page_external_laundry_count == 0)) { /* * No pageout, but some clean pages were freed. Start a complete * scan again without waiting. |