this->set_layout_buf(this->get_bptr().c_str());
}
- void prepare_commit(Transaction &t) final {
- if (!is_rewrite_transaction(t.get_src())) {
- parent_node_t::prepare_commit();
- }
+ void prepare_commit() final {
+ parent_node_t::prepare_commit();
}
virtual ~FixedKVInternalNode() {
delta_buffer.clear();
}
- void on_replace_prior(Transaction &t) final {
- if (!is_rewrite_transaction(t.get_src())) {
- this->parent_node_t::on_replace_prior();
- if (this->is_btree_root()) {
- this->root_node_t::on_replace_prior();
- } else {
- this->child_node_t::on_replace_prior();
- }
+ void on_replace_prior() final {
+ this->parent_node_t::on_replace_prior();
+ if (this->is_btree_root()) {
+ this->root_node_t::on_replace_prior();
+ } else {
+ this->child_node_t::on_replace_prior();
}
}
}
virtual void do_prepare_commit() = 0;
- void prepare_commit(Transaction &t) final {
- if (!is_rewrite_transaction(t.get_src())) {
- do_prepare_commit();
- }
+ void prepare_commit() final {
+ do_prepare_commit();
modifications = 0;
}
virtual void do_on_replace_prior() = 0;
- void on_replace_prior(Transaction &t) final {
+ void on_replace_prior() final {
ceph_assert(!this->is_rewrite());
- if (!is_rewrite_transaction(t.get_src())) {
- do_on_replace_prior();
- if (this->is_btree_root()) {
- this->root_node_t::on_replace_prior();
- } else {
- this->child_node_t::on_replace_prior();
- }
+ do_on_replace_prior();
+ if (this->is_btree_root()) {
+ this->root_node_t::on_replace_prior();
+ } else {
+ this->child_node_t::on_replace_prior();
}
modifications = 0;
}
}
i->prepare_write();
- i->prepare_commit(t);
+ i->prepare_commit();
if (i->is_mutation_pending()) {
- i->on_replace_prior(t);
+ i->on_replace_prior();
} // else, is_exist_mutation_pending():
// - it doesn't have prior_instance to replace
i->trans_view_hook.unlink();
}
- t.for_each_finalized_fresh_block([&t](auto &e) {
+ t.for_each_finalized_fresh_block([](auto &e) {
// fresh blocks' `prepare_commit` must be invoked before
// retiering extents, this is because logical linked tree
// nodes needs to access their prior instances in this
// phase if they are rewritten.
- e->prepare_commit(t);
+ e->prepare_commit();
});
/*
* Called prior to committing the transaction in which this extent
* is living.
*/
- virtual void prepare_commit(Transaction &) {}
+ virtual void prepare_commit() {}
/**
* on_initial_write
* with the states of Cache and can't wait till transaction
* completes.
*/
- virtual void on_replace_prior(Transaction &) {}
+ virtual void on_replace_prior() {}
/**
* on_invalidated
return (get_laddr() + get_length()).checked_to_laddr();
}
protected:
- void on_replace_prior(Transaction &t) final {
+ void on_replace_prior() final {
assert(is_seen_by_users());
- if (!is_rewrite_transaction(t.get_src())) {
- lba_child_node_t::on_replace_prior();
- }
- do_on_replace_prior(t);
+ lba_child_node_t::on_replace_prior();
+ do_on_replace_prior();
}
- virtual void do_on_replace_prior(Transaction &t) {}
+ virtual void do_on_replace_prior() {}
void on_data_commit() final {
ceph_abort("impossible");
}
modified_region.clear();
}
- void prepare_commit(Transaction &t) final {
- if (is_rewrite_transaction(t.get_src())) {
- return;
- }
+ void prepare_commit() final {
if (has_mutation()) {
ceph_assert(!cached_overwrites.is_empty());
if (cached_overwrites.has_cached_bptr()) {
}
}
- void prepare_commit(Transaction &t) final {
- if (is_rewrite_transaction(t.get_src())) {
- return;
- }
+ void prepare_commit() final {
if (unlikely(!is_seen_by_users())) {
ceph_assert(is_rewrite());
auto &prior = *get_prior_instance()->template cast<OMapInnerNode>();
}
}
- void do_on_replace_prior(Transaction &t) final {
- if (is_rewrite_transaction(t.get_src())) {
- return;
- }
+ void do_on_replace_prior() final {
this->parent_node_t::on_replace_prior();
if (!this->is_btree_root()) {
auto &prior = *get_prior_instance()->template cast<OMapInnerNode>();
this->child_node_t::on_invalidated();
}
- void prepare_commit(Transaction &t) final {
- if (is_rewrite_transaction(t.get_src())) {
- return;
- }
+ void prepare_commit() final {
if (unlikely(!is_seen_by_users())) {
ceph_assert(is_rewrite());
auto &prior = *get_prior_instance()->template cast<OMapLeafNode>();
}
}
- void do_on_replace_prior(Transaction &t) final {
+ void do_on_replace_prior() final {
ceph_assert(!this->is_rewrite());
- if (!this->is_btree_root() && !is_rewrite_transaction(t.get_src())) {
+ if (!this->is_btree_root()) {
auto &prior = *get_prior_instance()->template cast<OMapLeafNode>();
assert(prior.base_child_t::has_parent_tracker());
this->child_node_t::on_replace_prior();
namespace crimson::os::seastore {
-void RootBlock::on_replace_prior(Transaction &t) {
- if (!lba_root_node ||
- // for rewrite transactions, we keep the prior extents instead of
- // the new ones.
- is_rewrite_transaction(t.get_src())) {
+void RootBlock::on_replace_prior() {
+ if (!lba_root_node) {
auto &prior = static_cast<RootBlock&>(*get_prior_instance());
if (prior.lba_root_node) {
RootBlockRef this_ref = this;
}
}
}
- if (!backref_root_node ||
- // for rewrite transactions, we keep the prior extents instead of
- // the new ones.
- is_rewrite_transaction(t.get_src())) {
+ if (!backref_root_node) {
auto &prior = static_cast<RootBlock&>(*get_prior_instance());
if (prior.backref_root_node) {
RootBlockRef this_ref = this;
return extent_types_t::ROOT;
}
- void on_replace_prior(Transaction &t) final;
+ void on_replace_prior() final;
/// dumps root as delta
ceph::bufferlist get_delta() final {