summaryrefslogtreecommitdiff
path: root/ft/rollback.cc
diff options
context:
space:
mode:
authorZardosht Kasheff <zardosht@tokutek.com>2012-08-15 01:56:49 +0000
committerYoni Fogel <yoni@tokutek.com>2013-04-17 00:01:03 -0400
commitc451f6628e8b6ab807b90dd4d4833cee63ca2bd0 (patch)
tree24d25595d9f4581ad058a9c5432dae00ebf7fe6d /ft/rollback.cc
parent3578320579b38840c96b82ef2ec719807b01ce46 (diff)
downloadmariadb-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.cc12
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);
}