).si_then([addr, &t](auto&& e) -> read_iertr::future<NodeExtentRef> {
TRACET("read {}B at {:#x} -- {}",
t, e->get_length(), e->get_laddr(), *e);
- if (t.is_conflicted()) {
- ERRORT("transaction conflict detected on extent read {}", t, *e);
- assert(t.is_conflicted());
- return crimson::ct_error::eagain::make();
- }
- assert(e->is_valid());
assert(e->get_laddr() == addr);
std::ignore = addr;
return read_iertr::make_ready_future<NodeExtentRef>(e);
auto this_obj = *this;
return p_cursor->erase<FORCE_MERGE>(p_tree->get_context(t), true
).si_then([this_obj, this] (Ref<tree_cursor_t> next_cursor) {
+ assert(p_cursor->is_invalid());
if (next_cursor) {
assert(!next_cursor->is_end());
return Cursor{p_tree, next_cursor};