diff options
author | Zardosht Kasheff <zardosht@tokutek.com> | 2012-08-15 01:56:49 +0000 |
---|---|---|
committer | Yoni Fogel <yoni@tokutek.com> | 2013-04-17 00:01:03 -0400 |
commit | c451f6628e8b6ab807b90dd4d4833cee63ca2bd0 (patch) | |
tree | 24d25595d9f4581ad058a9c5432dae00ebf7fe6d /ft/rollback.cc | |
parent | 3578320579b38840c96b82ef2ec719807b01ce46 (diff) | |
download | mariadb-git-c451f6628e8b6ab807b90dd4d4833cee63ca2bd0.tar.gz |
refs #4606, merge to main
git-svn-id: file:///svn/toku/tokudb@46797 c7de825b-a66e-492c-adef-691d508d4ae1
Diffstat (limited to 'ft/rollback.cc')
-rw-r--r-- | ft/rollback.cc | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/ft/rollback.cc b/ft/rollback.cc index 175ac482257..65080101719 100644 --- a/ft/rollback.cc +++ b/ft/rollback.cc @@ -22,7 +22,7 @@ void toku_rollback_log_unpin_and_remove(TOKUTXN txn, ROLLBACK_LOG_NODE log) { int r; CACHEFILE cf = txn->logger->rollback_cachefile; FT CAST_FROM_VOIDP(h, toku_cachefile_get_userdata(cf)); - r = toku_cachetable_unpin_and_remove (cf, log->blocknum, rollback_unpin_remove_callback, h); + r = toku_cachetable_unpin_and_remove (cf, log->ct_pair, rollback_unpin_remove_callback, h); assert(r == 0); } @@ -62,6 +62,11 @@ rollback_memory_size(ROLLBACK_LOG_NODE log) { return make_rollback_pair_attr(size); } +static void toku_rollback_node_save_ct_pair(void *value_data, PAIR p) { + ROLLBACK_LOG_NODE CAST_FROM_VOIDP(log, value_data); + log->ct_pair = p; +} + // create and pin a new rollback log node. chain it to the other rollback nodes // by providing a previous blocknum/ hash and assigning the new rollback log // node the next sequence number @@ -91,7 +96,8 @@ static void rollback_log_create (TOKUTXN txn, BLOCKNUM previous, uint32_t previo *result = log; r = toku_cachetable_put(cf, log->blocknum, log->hash, log, rollback_memory_size(log), - get_write_callbacks_for_rollback_log(h)); + get_write_callbacks_for_rollback_log(h), + toku_rollback_node_save_ct_pair); assert(r == 0); txn->roll_info.current_rollback = log->blocknum; txn->roll_info.current_rollback_hash = log->hash; @@ -100,7 +106,7 @@ static void rollback_log_create (TOKUTXN txn, BLOCKNUM previous, uint32_t previo void toku_rollback_log_unpin(TOKUTXN txn, ROLLBACK_LOG_NODE log) { int r; CACHEFILE cf = txn->logger->rollback_cachefile; - r = toku_cachetable_unpin(cf, log->blocknum, log->hash, + r = toku_cachetable_unpin(cf, log->ct_pair, (enum cachetable_dirty)log->dirty, rollback_memory_size(log)); assert(r == 0); } |