From 002211575be13d57b50977fc910cc54268dc47fd Mon Sep 17 00:00:00 2001 From: Michael Cahill Date: Tue, 21 Jan 2014 13:00:56 +1100 Subject: Fix the eviction pass for internal pages: check the local flags: we clear the cache flags after each walk. --- src/btree/bt_evict.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/btree/bt_evict.c b/src/btree/bt_evict.c index b30477d882b..d57162c06a9 100644 --- a/src/btree/bt_evict.c +++ b/src/btree/bt_evict.c @@ -246,7 +246,7 @@ __evict_worker(WT_SESSION_IMPL *session) "Eviction pass with: Max: %" PRIu64 " In use: %" PRIu64 " Dirty: %" PRIu64 " Internal: %s", bytes_max, bytes_inuse, dirty_inuse, - F_ISSET(cache, WT_EVICT_INTERNAL) ? "yes" : "no"); + LF_ISSET(WT_EVICT_PASS_INTERNAL) ? "yes" : "no"); /* * When the cache is full, track whether pages are being @@ -858,7 +858,7 @@ __evict_walk_file(WT_SESSION_IMPL *session, u_int *slotp, uint32_t flags) btree->evict_page->ref->state == WT_REF_EVICT_WALK); walk_flags = WT_TREE_EVICT; - if (F_ISSET(cache, WT_EVICT_INTERNAL)) + if (LF_ISSET(WT_EVICT_PASS_INTERNAL)) walk_flags |= WT_TREE_SKIP_LEAF; /* * Get some more eviction candidate pages. @@ -937,7 +937,8 @@ __evict_walk_file(WT_SESSION_IMPL *session, u_int *slotp, uint32_t flags) /* The remaining checks don't apply to merges. */ goto add; - } + } else if (LF_ISSET(WT_EVICT_PASS_INTERNAL)) + continue; /* * If this page has never been considered for eviction, -- cgit v1.2.1