Commit c02e91a5 authored by Zardosht Kasheff's avatar Zardosht Kasheff Committed by Yoni Fogel

[t:4119], remove direct call to toku_cachetable_get_and_pin in the is_empty functions

git-svn-id: file:///svn/toku/tokudb@39028 c7de825b-a66e-492c-adef-691d508d4ae1
parent 592a8dd2
...@@ -6243,29 +6243,21 @@ static BOOL is_empty_fast_iter (BRT brt, BRTNODE node) { ...@@ -6243,29 +6243,21 @@ static BOOL is_empty_fast_iter (BRT brt, BRTNODE node) {
} }
BRTNODE childnode; BRTNODE childnode;
{ {
void *node_v;
BLOCKNUM childblocknum = BP_BLOCKNUM(node,childnum); BLOCKNUM childblocknum = BP_BLOCKNUM(node,childnum);
u_int32_t fullhash = compute_child_fullhash(brt->cf, node, childnum); u_int32_t fullhash = compute_child_fullhash(brt->cf, node, childnum);
struct brtnode_fetch_extra bfe; struct brtnode_fetch_extra bfe;
fill_bfe_for_full_read(&bfe, brt->h); fill_bfe_for_full_read(&bfe, brt->h);
int rr = toku_cachetable_get_and_pin( // don't need to pass in dependent nodes as we are not
brt->cf, // modifying nodes we are pinning
childblocknum, toku_pin_brtnode_off_client_thread(
fullhash, brt->h,
&node_v, childblocknum,
NULL, fullhash,
toku_brtnode_flush_callback, &bfe,
toku_brtnode_fetch_callback, 0,
toku_brtnode_pe_est_callback, NULL,
toku_brtnode_pe_callback, &childnode
toku_brtnode_pf_req_callback,
toku_brtnode_pf_callback,
toku_brtnode_cleaner_callback,
&bfe,
brt->h
); );
assert(rr ==0);
childnode = node_v;
} }
int child_is_empty = is_empty_fast_iter(brt, childnode); int child_is_empty = is_empty_fast_iter(brt, childnode);
toku_unpin_brtnode(brt, childnode); toku_unpin_brtnode(brt, childnode);
...@@ -6294,27 +6286,17 @@ BOOL toku_brt_is_empty_fast (BRT brt) ...@@ -6294,27 +6286,17 @@ BOOL toku_brt_is_empty_fast (BRT brt)
toku_brtheader_grab_treelock(brt->h); toku_brtheader_grab_treelock(brt->h);
CACHEKEY *rootp = toku_calculate_root_offset_pointer(brt->h, &fullhash); CACHEKEY *rootp = toku_calculate_root_offset_pointer(brt->h, &fullhash);
void *node_v;
struct brtnode_fetch_extra bfe; struct brtnode_fetch_extra bfe;
fill_bfe_for_full_read(&bfe, brt->h); fill_bfe_for_full_read(&bfe, brt->h);
int rr = toku_cachetable_get_and_pin( toku_pin_brtnode_off_client_thread(
brt->cf, brt->h,
*rootp, *rootp,
fullhash, fullhash,
&node_v,
NULL,
toku_brtnode_flush_callback,
toku_brtnode_fetch_callback,
toku_brtnode_pe_est_callback,
toku_brtnode_pe_callback,
toku_brtnode_pf_req_callback,
toku_brtnode_pf_callback,
toku_brtnode_cleaner_callback,
&bfe, &bfe,
brt->h 0,
NULL,
&node
); );
assert_zero(rr);
node = node_v;
toku_brtheader_release_treelock(brt->h); toku_brtheader_release_treelock(brt->h);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment