summaryrefslogtreecommitdiff
path: root/vm/vm_page.c
diff options
context:
space:
mode:
Diffstat (limited to 'vm/vm_page.c')
-rw-r--r--vm/vm_page.c14
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.