]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore/btree_lba_manager: cleanup methods that return std::pair
authorZhang Song <zhangsong02@qianxin.com>
Wed, 3 Apr 2024 09:07:52 +0000 (17:07 +0800)
committerZhang Song <zhangsong02@qianxin.com>
Wed, 3 Apr 2024 09:36:20 +0000 (17:36 +0800)
Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc
src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h

index b9fa0685a80a0ba9719e0022f32e8ccf06650840..7a02dad06d881fe3a550411407d50dfdb3587a84 100644 (file)
@@ -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<std::optional<std::pair<paddr_t, extent_len_t>>>
+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<paddr_t, extent_len_t>>(
-               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<ref_update_result_t>>(
+               std::make_optional<ref_update_result_t>(res));
          });
        } else {
          return btree.update(c, iter, val, nullptr
          ).si_then([](auto) {
-           return seastar::make_ready_future<
-             std::optional<std::pair<paddr_t, extent_len_t>>>(std::nullopt);
+           return ref_iertr::make_ready_future<
+             std::optional<ref_update_result_t>>(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<std::pair<paddr_t, extent_len_t>>>();
-    if (!result.refcount && result.pladdr.is_laddr() && cascade_remove) {
+      std::optional<ref_update_result_t>>();
+    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<LBABtree, _update_mapping_ret_bare>(
+  return with_btree_ret<LBABtree, update_mapping_ret_bare_t>(
     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)
+           };
          });
        }
       });
index 626b9e02c0c539df067fa9b81904936f7ea425a4..bb0c52accfaa1721825083ab71937302a79f01ed 100644 (file)
@@ -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<ref_update_result_t, BtreeLBAMappingRef>;
+  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<lba_map_val_t, BtreeLBAMappingRef>;
-  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<laddr_t> c,
     std::list<BtreeLBAMappingRef> &pin_list);
 
-  ref_iertr::future<std::optional<std::pair<paddr_t, extent_len_t>>>
-  _decref_intermediate(
+  using _decref_intermediate_ret = ref_iertr::future<
+    std::optional<ref_update_result_t>>;
+  _decref_intermediate_ret _decref_intermediate(
     Transaction &t,
     laddr_t addr,
     extent_len_t len);