From b6021d4a939e4d4b167d50ecbbccba4742fb583b Mon Sep 17 00:00:00 2001 From: "Adam C. Emerson" Date: Thu, 17 Mar 2022 12:30:19 -0400 Subject: [PATCH] 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 --- src/neorados/RADOS.cc | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) 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, -- 2.39.5