void RootBlock::on_replace_prior(Transaction &t) {
if (!lba_root_node) {
auto &prior = static_cast<RootBlock&>(*get_prior_instance());
- lba_root_node = prior.lba_root_node;
- if (lba_root_node) {
- ((lba_manager::btree::LBANode*)lba_root_node)->root_block = this;
+ if (prior.lba_root_node) {
+ RootBlockRef this_ref = this;
+ link_phy_tree_root_node(
+ this_ref,
+ static_cast<lba_manager::btree::LBANode*>(prior.lba_root_node)
+ );
}
}
if (!backref_root_node) {
auto &prior = static_cast<RootBlock&>(*get_prior_instance());
- backref_root_node = prior.backref_root_node;
- if (backref_root_node) {
- ((backref::BackrefNode*)backref_root_node)->root_block = this;
+ if (prior.backref_root_node) {
+ RootBlockRef this_ref = this;
+ link_phy_tree_root_node(
+ this_ref,
+ static_cast<backref::BackrefNode*>(prior.backref_root_node)
+ );
}
}
}