From: Kefu Chai Date: Thu, 19 Sep 2019 10:11:31 +0000 (+0800) Subject: crimson/osd: ShardServices::send_pg_temp() returns future X-Git-Tag: v15.1.0~1487^2~1 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=e541750959ad662d9cbab7631621b331a04f8baa;p=ceph-ci.git crimson/osd: ShardServices::send_pg_temp() returns future it should not run in background unless necessary. please note, we don't have a caller of this method yet. Signed-off-by: Kefu Chai --- diff --git a/src/crimson/osd/shard_services.cc b/src/crimson/osd/shard_services.cc index 84d8277d41e..e41b77ac27a 100644 --- a/src/crimson/osd/shard_services.cc +++ b/src/crimson/osd/shard_services.cc @@ -153,10 +153,10 @@ std::ostream& operator<<( return out; } -void ShardServices::send_pg_temp() +seastar::future<> ShardServices::send_pg_temp() { if (pg_temp_wanted.empty()) - return; + return seastar::now(); logger().debug("{}: {}", __func__, pg_temp_wanted); boost::intrusive_ptr ms[2] = {nullptr, nullptr}; for (auto& [pgid, pg_temp] : pg_temp_wanted) { @@ -167,12 +167,16 @@ void ShardServices::send_pg_temp() } m->pg_temp.emplace(pgid, pg_temp.acting); } - for (auto &m : ms) { - if (m) { - monc.send_message(m); - } - } - _sent_pg_temp(); + return seastar::parallel_for_each(std::begin(ms), std::end(ms), + [this](auto m) { + if (m) { + return monc.send_message(m); + } else { + return seastar::now(); + } + }).then([this] { + _sent_pg_temp(); + }); } void ShardServices::update_map(cached_map_t new_osdmap) diff --git a/src/crimson/osd/shard_services.h b/src/crimson/osd/shard_services.h index 6dbcde01ff7..d9a2112b6b2 100644 --- a/src/crimson/osd/shard_services.h +++ b/src/crimson/osd/shard_services.h @@ -132,7 +132,7 @@ public: bool forced = false); void remove_want_pg_temp(pg_t pgid); void requeue_pg_temp(); - void send_pg_temp(); + seastar::future<> send_pg_temp(); // Shard-local OSDMap private: