t).safe_then([this, &t, offset, length](auto extent) {
return extent->lookup_range(
get_context(t),
- offset, length);
+ offset, length
+ ).safe_then([extent](auto ret) { return ret; });
}).safe_then([](auto &&e) {
logger().debug("BtreeLBAManager::get_mapping: got mapping {}", e);
return get_mapping_ret(
{
return seastar::do_with(
std::move(f),
- [=, &t](auto &f) {
+ LBANodeRef(),
+ [=, &t](auto &f, auto &lbarootref) {
return get_root(t).safe_then(
[=, &t, &f](LBANodeRef lbaroot) mutable {
+ lbarootref = lbaroot;
return lbaroot->scan_mappings(
get_context(t),
begin,
{
return seastar::do_with(
std::move(f),
- [=, &t](auto &f) {
+ LBANodeRef(),
+ [=, &t](auto &f, auto &lbarootref) {
return get_root(t).safe_then(
[=, &t, &f](LBANodeRef lbaroot) mutable {
+ lbarootref = lbaroot;
return lbaroot->scan_mapped_space(
get_context(t),
f);
pin_list.begin(), pin_list.end());
});
});
- }).safe_then([result=std::move(result_up)] {
+ }).safe_then([result=std::move(result_up), ref=LBANodeRef(this)] {
return lookup_range_ertr::make_ready_future<lba_pin_list_t>(
std::move(*result));
});
get_paddr()).safe_then([=, &f](auto child) {
return child->scan_mappings(c, begin, end, f);
});
- });
+ }).safe_then([ref=LBANodeRef(this)]{});
}
LBAInternalNode::scan_mapped_space_ret LBAInternalNode::scan_mapped_space(
get_paddr()).safe_then([=, &f](auto child) {
return child->scan_mapped_space(c, f);
});
- });
+ }).safe_then([ref=LBANodeRef(this)]{});
}