]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
neorados: Don't call dispatch inside with_osdmap
authorAdam C. Emerson <aemerson@redhat.com>
Thu, 17 Mar 2022 16:30:19 +0000 (12:30 -0400)
committerAdam Emerson <aemerson@redhat.com>
Wed, 6 Dec 2023 20:39:35 +0000 (15:39 -0500)
The lock will continue to be held over the 'dispatch' with C++20
coroutines.

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
src/neorados/RADOS.cc

index 3b3259b8aea61dd63c5cec970fddc021015a72b4..c238ff450dc57914d092b3b3c6a6eb349e318de1 100644 (file)
@@ -900,13 +900,15 @@ std::optional<uint64_t> RADOS::get_pool_alignment(int64_t pool_id)
 }
 
 void RADOS::list_pools(std::unique_ptr<LSPoolsComp> c) {
-  impl->objecter->with_osdmap(
-    [&](OSDMap& o) {
-      std::vector<std::pair<std::int64_t, std::string>> v;
-      for (auto p : o.get_pools())
-       v.push_back(std::make_pair(p.first, o.get_pool_name(p.first)));
-      ca::dispatch(std::move(c), std::move(v));
-    });
+  ca::dispatch(std::move(c),
+              impl->objecter->with_osdmap(
+                [&](OSDMap& o) {
+                  std::vector<std::pair<std::int64_t, std::string>> v;
+                  for (auto p : o.get_pools())
+                    v.push_back(std::make_pair(p.first,
+                                               o.get_pool_name(p.first)));
+                  return v;
+                }));
 }
 
 void RADOS::create_pool_snap(std::int64_t pool,