]> git.apps.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>
Thu, 14 Sep 2023 21:01:03 +0000 (17:01 -0400)
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 28a47cddf3539b6c44c391205dc7b986ef82a020..167c9eb76aea4755f9631b2fae1f7468fa5b8764 100644 (file)
@@ -934,13 +934,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,