diff options
author | Michael Cahill <michael.cahill@wiredtiger.com> | 2014-01-21 13:00:56 +1100 |
---|---|---|
committer | Michael Cahill <michael.cahill@wiredtiger.com> | 2014-01-21 13:00:56 +1100 |
commit | 002211575be13d57b50977fc910cc54268dc47fd (patch) | |
tree | c256f49d2d66f00c37b23ff5a5cc05cac3756da1 /src | |
parent | b03ffc43a45e70d1bfa49acba7485e735928aff8 (diff) | |
download | mongo-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.c | 7 |
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, |