// checking the lba child must be atomic with creating
// and linking the absent child
if (v.has_child()) {
- return v.get_child_fut().safe_then(
- [on_found=std::move(on_found), node_iter, c,
- parent_entry](auto child) mutable {
+ return trans_intr::make_interruptible(std::move(v.get_child_fut())
+ ).si_then([on_found=std::move(on_found), node_iter, c,
+ parent_entry](auto child) {
LOG_PREFIX(FixedKVBtree::lookup_internal_level);
SUBTRACET(seastore_fixedkv_tree,
"got child on {}, pos: {}, res: {}",
// checking the lba child must be atomic with creating
// and linking the absent child
if (v.has_child()) {
- return v.get_child_fut().safe_then(
- [on_found=std::move(on_found), node_iter, c,
- parent_entry](auto child) mutable {
+ return trans_intr::make_interruptible(std::move(v.get_child_fut())
+ ).si_then([on_found=std::move(on_found), node_iter, c,
+ parent_entry](auto child) {
LOG_PREFIX(FixedKVBtree::lookup_leaf);
SUBTRACET(seastore_fixedkv_tree,
"got child on {}, pos: {}, res: {}",
// checking the lba child must be atomic with creating
// and linking the absent child
if (v.has_child()) {
- return v.get_child_fut().safe_then(
- [do_merge=std::move(do_merge), &pos,
- donor_iter, donor_is_left, c, parent_pos](auto child) mutable {
+ return trans_intr::make_interruptible(std::move(v.get_child_fut())
+ ).si_then([do_merge=std::move(do_merge), &pos,
+ donor_iter, donor_is_left, c, parent_pos](auto child) {
LOG_PREFIX(FixedKVBtree::merge_level);
SUBTRACET(seastore_fixedkv_tree,
"got child on {}, pos: {}, res: {}",