From: Zhang Song Date: Wed, 3 Apr 2024 09:07:52 +0000 (+0800) Subject: crimson/os/seastore/btree_lba_manager: cleanup methods that return std::pair X-Git-Tag: v20.0.0~2208^2~2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=36f96ca000ab8839b7649c32f6d53ea88f9d9700;p=ceph.git crimson/os/seastore/btree_lba_manager: cleanup methods that return std::pair Signed-off-by: Zhang Song --- diff --git a/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc b/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc index b9fa0685a80a0..7a02dad06d881 100644 --- a/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc +++ b/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc @@ -553,8 +553,8 @@ BtreeLBAManager::update_mapping( return ret; }, nextent - ).si_then([&t, laddr, prev_addr, addr, FNAME](auto p) { - auto &result = p.first; + ).si_then([&t, laddr, prev_addr, addr, FNAME](auto res) { + auto &result = res.map_value; DEBUGT("laddr={}, paddr {} => {} done -- {}", t, laddr, prev_addr, addr, result); }, @@ -616,7 +616,7 @@ void BtreeLBAManager::register_metrics() ); } -BtreeLBAManager::ref_iertr::future>> +BtreeLBAManager::_decref_intermediate_ret BtreeLBAManager::_decref_intermediate( Transaction &t, laddr_t addr, @@ -650,15 +650,20 @@ BtreeLBAManager::_decref_intermediate( if (!val.refcount) { return btree.remove(c, iter ).si_then([val] { - return std::make_optional< - std::pair>( - val.pladdr.get_paddr(), val.len); + auto res = ref_update_result_t{ + val.refcount, + val.pladdr.get_paddr(), + val.len + }; + return ref_iertr::make_ready_future< + std::optional>( + std::make_optional(res)); }); } else { return btree.update(c, iter, val, nullptr ).si_then([](auto) { - return seastar::make_ready_future< - std::optional>>(std::nullopt); + return ref_iertr::make_ready_future< + std::optional>(std::nullopt); }); } }); @@ -685,36 +690,40 @@ BtreeLBAManager::update_refcount( return out; }, nullptr - ).si_then([&t, addr, delta, FNAME, this, cascade_remove](auto p) { - auto &result = p.first; - auto &mapping = p.second; - DEBUGT("laddr={}, delta={} done -- {}", t, addr, delta, result); + ).si_then([&t, addr, delta, FNAME, this, cascade_remove](auto res) { + auto &map_value = res.map_value; + auto &mapping = res.mapping; + DEBUGT("laddr={}, delta={} done -- {}", t, addr, delta, map_value); auto fut = ref_iertr::make_ready_future< - std::optional>>(); - if (!result.refcount && result.pladdr.is_laddr() && cascade_remove) { + std::optional>(); + if (!map_value.refcount && map_value.pladdr.is_laddr() && cascade_remove) { fut = _decref_intermediate( t, - result.pladdr.get_laddr(), - result.len + map_value.pladdr.get_laddr(), + map_value.len ); } - return fut.si_then([result, mapping=std::move(mapping)] + return fut.si_then([map_value, mapping=std::move(mapping)] (auto removed) mutable { - if (result.pladdr.is_laddr() + if (map_value.pladdr.is_laddr() && removed) { - return std::make_pair( - ref_update_result_t{ - result.refcount, - removed->first, - removed->second}, - std::move(mapping)); + return update_refcount_ret_bare_t{ + ref_update_result_t{ + map_value.refcount, + removed->addr, + removed->length + }, + std::move(mapping) + }; } else { - return std::make_pair( - ref_update_result_t{ - result.refcount, - result.pladdr, - result.len}, - std::move(mapping)); + return update_refcount_ret_bare_t{ + ref_update_result_t{ + map_value.refcount, + map_value.pladdr, + map_value.len + }, + std::move(mapping) + }; } }); }); @@ -728,7 +737,7 @@ BtreeLBAManager::_update_mapping( LogicalCachedExtent* nextent) { auto c = get_context(t); - return with_btree_ret( + return with_btree_ret( cache, c, [f=std::move(f), c, addr, nextent](auto &btree) mutable { @@ -748,8 +757,10 @@ BtreeLBAManager::_update_mapping( c, iter ).si_then([ret] { - return std::make_pair( - std::move(ret), BtreeLBAMappingRef(nullptr)); + return update_mapping_ret_bare_t{ + std::move(ret), + BtreeLBAMappingRef(nullptr) + }; }); } else { return btree.update( @@ -758,8 +769,10 @@ BtreeLBAManager::_update_mapping( ret, nextent ).si_then([c, ret](auto iter) { - return std::make_pair( - std::move(ret), iter.get_pin(c)); + return update_mapping_ret_bare_t{ + std::move(ret), + iter.get_pin(c) + }; }); } }); diff --git a/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h b/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h index 626b9e02c0c53..bb0c52accfaa1 100644 --- a/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h +++ b/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h @@ -244,8 +244,8 @@ public: ).si_then([&t, this, intermediate_base](auto indirect_mapping) { assert(indirect_mapping->is_indirect()); return update_refcount(t, intermediate_base, 1, false - ).si_then([imapping=std::move(indirect_mapping)](auto p) mutable { - auto mapping = std::move(p.second); + ).si_then([imapping=std::move(indirect_mapping)](auto res) mutable { + auto mapping = std::move(res.mapping); ceph_assert(mapping->is_stable()); mapping->make_indirect( imapping->get_key(), @@ -281,8 +281,8 @@ public: laddr_t addr, bool cascade_remove) final { return update_refcount(t, addr, -1, cascade_remove - ).si_then([](auto p) { - return std::move(p.first); + ).si_then([](auto res) { + return std::move(res.ref_update_res); }); } @@ -290,8 +290,8 @@ public: Transaction &t, laddr_t addr) final { return update_refcount(t, addr, 1, false - ).si_then([](auto p) { - return std::move(p.first); + ).si_then([](auto res) { + return std::move(res.ref_update_res); }); } @@ -301,8 +301,8 @@ public: int delta) final { ceph_assert(delta > 0); return update_refcount(t, addr, delta, false - ).si_then([](auto p) { - return std::move(p.first); + ).si_then([](auto res) { + return std::move(res.ref_update_res); }); } @@ -366,10 +366,13 @@ private: * * Updates refcount, returns resulting refcount */ - using update_refcount_ret_bare = std::pair; + struct update_refcount_ret_bare_t { + ref_update_result_t ref_update_res; + BtreeLBAMappingRef mapping; + }; using update_refcount_iertr = ref_iertr; using update_refcount_ret = update_refcount_iertr::future< - update_refcount_ret_bare>; + update_refcount_ret_bare_t>; update_refcount_ret update_refcount( Transaction &t, laddr_t addr, @@ -381,9 +384,13 @@ private: * * Updates mapping, removes if f returns nullopt */ + struct update_mapping_ret_bare_t { + lba_map_val_t map_value; + BtreeLBAMappingRef mapping; + }; using _update_mapping_iertr = ref_iertr; - using _update_mapping_ret_bare = std::pair; - using _update_mapping_ret = ref_iertr::future<_update_mapping_ret_bare>; + using _update_mapping_ret = ref_iertr::future< + update_mapping_ret_bare_t>; using update_func_t = std::function< lba_map_val_t(const lba_map_val_t &v) >; @@ -411,8 +418,9 @@ private: op_context_t c, std::list &pin_list); - ref_iertr::future>> - _decref_intermediate( + using _decref_intermediate_ret = ref_iertr::future< + std::optional>; + _decref_intermediate_ret _decref_intermediate( Transaction &t, laddr_t addr, extent_len_t len);