From 7d56e0e3422b4561a0a742f8c382c32887316434 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Wed, 26 May 2021 15:40:32 -0700 Subject: [PATCH] crimson/os/seastore: use tuple return for omap_list throughout Signed-off-by: Samuel Just --- src/crimson/os/seastore/omap_manager.h | 2 +- .../btree/omap_btree_node_impl.cc | 4 +-- src/crimson/os/seastore/seastore.cc | 29 +++++++++---------- src/crimson/os/seastore/seastore.h | 13 +++++---- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/crimson/os/seastore/omap_manager.h b/src/crimson/os/seastore/omap_manager.h index 1f5f0522d66..f179e933fe6 100644 --- a/src/crimson/os/seastore/omap_manager.h +++ b/src/crimson/os/seastore/omap_manager.h @@ -143,7 +143,7 @@ public: } }; using omap_list_ertr = base_ertr; - using omap_list_bare_ret = std::pair< + using omap_list_bare_ret = std::tuple< bool, std::map>>; using omap_list_ret = omap_list_ertr::future; diff --git a/src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.cc b/src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.cc index 729c54b115b..ca5479b49f6 100644 --- a/src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.cc +++ b/src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.cc @@ -207,8 +207,8 @@ OMapInnerNode::list( iter_cend(), list_bare_ret(false, {}), [=, &start](auto &biter, auto &eiter, auto &ret) { - auto &complete = ret.first; - auto &result = ret.second; + auto &complete = std::get<0>(ret); + auto &result = std::get<1>(ret); return crimson::do_until( [&, config, oc, this]() -> list_ertr::future { if (biter == eiter || result.size() == config.max_result_size) { diff --git a/src/crimson/os/seastore/seastore.cc b/src/crimson/os/seastore/seastore.cc index ae03131f4e3..f99b763b59f 100644 --- a/src/crimson/os/seastore/seastore.cc +++ b/src/crimson/os/seastore/seastore.cc @@ -293,9 +293,9 @@ SeaStore::get_attrs_ertr::future SeaStore::get_attrs( c, oid, [=](auto &t, auto& onode) { auto& layout = onode.get_layout(); return _omap_list(layout.xattr_root, t, std::nullopt, - OMapManager::omap_list_config_t::with_inclusive(false)).safe_then( - [&layout](auto p) { - auto& attrs = p.second; + OMapManager::omap_list_config_t::with_inclusive(false) + ).safe_then([&layout](auto p) { + auto& attrs = std::get<1>(p); ceph::bufferlist bl; if (layout.oi_size) { bl.append(ceph::bufferptr(&layout.oi[0], layout.oi_size)); @@ -399,17 +399,16 @@ SeaStore::omap_get_values( } }); } -OMapManager::omap_list_ret SeaStore::_omap_list( + +SeaStore::_omap_list_ret SeaStore::_omap_list( const omap_root_le_t& omap_root, Transaction& t, const std::optional& start, - OMapManager::omap_list_config_t config) + OMapManager::omap_list_config_t config) const { - using ret_bare_t = std::pair; - using int_ret_t = OMapManager::omap_list_ertr::future; auto root = omap_root.get(); if (root.is_null()) { - return seastar::make_ready_future( + return seastar::make_ready_future<_omap_list_bare_ret>( true, omap_values_t{} ); } @@ -417,7 +416,7 @@ OMapManager::omap_list_ret SeaStore::_omap_list( BtreeOMapManager(*transaction_manager), root, start, - [&t, config](auto &manager, auto& root, auto& start) -> int_ret_t { + [&t, config](auto &manager, auto& root, auto& start) { return manager.omap_list(root, t, start, config); }); } @@ -432,16 +431,14 @@ SeaStore::omap_get_values_ret_t SeaStore::omap_list( LOG_PREFIX(SeaStore::omap_list); DEBUG("{} {}", c->get_cid(), oid); using ret_bare_t = std::tuple; - using int_ret_t = omap_int_ertr_t::future; return repeat_with_onode( c, oid, - [this, config, &start](auto &t, auto &onode) -> int_ret_t { - return _omap_list(onode.get_layout().omap_root, t, start, config) - .safe_then([](auto&& p) { - return seastar::make_ready_future( - p.first, p.second); - }); + [this, config, &start](auto &t, auto &onode) { + return _omap_list( + onode.get_layout().omap_root, + t, start, config + ); }); } diff --git a/src/crimson/os/seastore/seastore.h b/src/crimson/os/seastore/seastore.h index 3ceec720a35..fde3c8a26f0 100644 --- a/src/crimson/os/seastore/seastore.h +++ b/src/crimson/os/seastore/seastore.h @@ -195,17 +195,20 @@ private: }); } + using _omap_list_bare_ret = OMapManager::omap_list_bare_ret; + using _omap_list_ret = OMapManager::omap_list_ret; + _omap_list_ret _omap_list( + const omap_root_le_t& omap_root, + Transaction& t, + const std::optional& start, + OMapManager::omap_list_config_t config) const; + friend class SeaStoreOmapIterator; omap_get_values_ret_t omap_list( CollectionRef ch, const ghobject_t &oid, const std::optional &_start, OMapManager::omap_list_config_t config); - OMapManager::omap_list_ret _omap_list( - const omap_root_le_t& omap_root, - Transaction& t, - const std::optional& start, - OMapManager::omap_list_config_t config); SegmentManagerRef segment_manager; TransactionManagerRef transaction_manager; -- 2.39.5