add_extent(root);
return replay_delta_ertr::now();
} else {
- auto get_extent_if_cached = [this](paddr_t addr)
+ auto _get_extent_if_cached = [this](paddr_t addr)
-> get_extent_ertr::future<CachedExtentRef> {
- auto retiter = extents.find_offset(addr);
- if (retiter != extents.end()) {
- CachedExtentRef ret = &*retiter;
+ CachedExtentRef ret;
+ auto result = query_cache_for_extent(addr, &ret);
+ if (result == Transaction::get_extent_ret::PRESENT) {
return ret->wait_io().then([ret] {
return ret;
});
- } else {
+ } else { // get_extent_ret::ABSENT
return seastar::make_ready_future<CachedExtentRef>();
}
};
delta.paddr,
delta.laddr,
delta.length) :
- get_extent_if_cached(
+ _get_extent_if_cached(
delta.paddr)
).handle_error(
replay_delta_ertr::pass_further{},
paddr_t offset, ///< [in] starting addr
segment_off_t length ///< [in] length
) {
- if (auto iter = extents.find_offset(offset);
- iter != extents.end()) {
- auto ret = TCachedExtentRef<T>(static_cast<T*>(&*iter));
+ CachedExtentRef _ret;
+ auto result = query_cache_for_extent(offset, &_ret);
+ if (result == Transaction::get_extent_ret::PRESENT) {
+ auto ret = TCachedExtentRef<T>(static_cast<T*>(_ret.get()));
return ret->wait_io(
).then([ret=std::move(ret)]() mutable -> get_extent_ret<T> {
// ret may be invalid, caller must check
get_extent_ertr::ready_future_marker{},
std::move(ret));
});
- } else {
+ } else { // get_extent_ret::ABSENT
auto ref = CachedExtent::make_cached_extent_ref<T>(
alloc_cache_buf(length));
ref->set_io_wait();