summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Cahill <michael.cahill@wiredtiger.com>2014-01-21 13:00:56 +1100
committerMichael Cahill <michael.cahill@wiredtiger.com>2014-01-21 13:00:56 +1100
commit002211575be13d57b50977fc910cc54268dc47fd (patch)
treec256f49d2d66f00c37b23ff5a5cc05cac3756da1 /src
parentb03ffc43a45e70d1bfa49acba7485e735928aff8 (diff)
downloadmongo-002211575be13d57b50977fc910cc54268dc47fd.tar.gz
Fix the eviction pass for internal pages: check the local flags: we clear the cache flags after each walk.
Diffstat (limited to 'src')
-rw-r--r--src/btree/bt_evict.c7
1 files changed, 4 insertions, 3 deletions
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,