for (auto &i: t.mutated_block_list) {
if (i->is_valid()) {
if (i->is_mutation_pending()) {
- i->set_io_wait(CachedExtent::extent_state_t::DIRTY,
- is_rewrite_transaction(t.get_src()));
+ i->set_io_wait(CachedExtent::extent_state_t::DIRTY);
commit_replace_extent(t, i, i->prior_instance);
} // else, is_exist_mutation_pending():
// - it doesn't have prior_instance to replace
i->get_length(),
i->get_type()));
}
- i->set_io_wait(CachedExtent::extent_state_t::CLEAN,
- is_rewrite_transaction(t.get_src()));
+ i->set_io_wait(CachedExtent::extent_state_t::CLEAN);
// Note, paddr is known until complete_commit(),
// so add_extent() later.
if (is_rewrite_transaction(t.get_src())) {
committer.sync_checksum();
}
i->get_prior_instance()->set_io_wait(
- CachedExtent::extent_state_t::CLEAN, true);
+ CachedExtent::extent_state_t::CLEAN);
}
}
i->get_length(),
i->get_type()));
}
+ i->set_io_wait(CachedExtent::extent_state_t::CLEAN);
+ // Note, paddr is (can be) known until complete_commit(),
+ // so add_extent() later.
if (is_rewrite_transaction(t.get_src())) {
assert(i->get_prior_instance());
assert(!i->committer);
if (is_lba_backref_node(i->get_type())) {
committer.sync_checksum();
}
- committer.block_trans(t);
i->get_prior_instance()->set_io_wait(
CachedExtent::extent_state_t::CLEAN, true);
}
- i->set_io_wait(CachedExtent::extent_state_t::CLEAN,
- is_rewrite_transaction(t.get_src()));
- // Note, paddr is (can be) known until complete_commit(),
- // so add_extent() later.
-
}
for (auto &i: t.inplace_ool_block_list) {
i->state = CachedExtent::extent_state_t::CLEAN;
} else {
assert(i->is_exist_mutation_pending());
- i->set_io_wait(CachedExtent::extent_state_t::DIRTY,
- is_rewrite_transaction(t.get_src()));
+ i->set_io_wait(CachedExtent::extent_state_t::DIRTY);
}
// exist mutation pending extents must be in t.mutated_block_list
assert(is_aligned(offset, get_block_size()));
assert(is_aligned(length, get_block_size()));
assert(extent->get_paddr().is_absolute());
- extent->set_io_wait(extent->state, false);
+ extent->set_io_wait(extent->state);
auto old_length = extent->get_loaded_length();
load_ranges_t to_read = extent->load_ranges(offset, length);
auto new_length = extent->get_loaded_length();
/// Returns true iff extent is stable and not io-pending
bool is_stable_ready() const {
- return is_stable() && (!is_pending_io() || io_wait->rewriting);
+ return is_stable() && !is_pending_io();
}
/// Returns true if extent can not be mutated,
struct io_wait_t {
seastar::shared_promise<> pr;
extent_state_t from_state;
- bool rewriting = false;
};
std::optional<io_wait_t> io_wait;
- void set_io_wait(extent_state_t new_state, bool rewriting) {
+ void set_io_wait(extent_state_t new_state) {
ceph_assert(!io_wait);
- io_wait.emplace(seastar::shared_promise<>(), state, rewriting);
+ io_wait.emplace(seastar::shared_promise<>(), state);
state = new_state;
assert(is_data_stable());
}