From: Adam C. Emerson Date: Thu, 17 Mar 2022 16:30:19 +0000 (-0400) Subject: neorados: Don't call dispatch inside with_osdmap X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=b6021d4a939e4d4b167d50ecbbccba4742fb583b;p=ceph.git neorados: Don't call dispatch inside with_osdmap The lock will continue to be held over the 'dispatch' with C++20 coroutines. Signed-off-by: Adam C. Emerson --- diff --git a/src/neorados/RADOS.cc b/src/neorados/RADOS.cc index 28a47cddf3539..167c9eb76aea4 100644 --- a/src/neorados/RADOS.cc +++ b/src/neorados/RADOS.cc @@ -934,13 +934,15 @@ std::optional RADOS::get_pool_alignment(int64_t pool_id) } void RADOS::list_pools(std::unique_ptr c) { - impl->objecter->with_osdmap( - [&](OSDMap& o) { - std::vector> 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> 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,