From 76f7b5ce35a76e7c9172e70df5c81c57fbbd1003 Mon Sep 17 00:00:00 2001 From: Amnon Hanuhov Date: Tue, 4 May 2021 16:12:43 +0300 Subject: [PATCH] crimson/osd: Overload ShardServices::send_to_osd() to take unique_ptr Signed-off-by: Amnon Hanuhov --- src/crimson/osd/shard_services.cc | 20 +++++++++++++++++--- src/crimson/osd/shard_services.h | 8 ++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/crimson/osd/shard_services.cc b/src/crimson/osd/shard_services.cc index 9ae11f7132f14..09246884b5739 100644 --- a/src/crimson/osd/shard_services.cc +++ b/src/crimson/osd/shard_services.cc @@ -85,8 +85,10 @@ void ShardServices::handle_conf_change(const ConfigProxy& conf, } } -seastar::future<> ShardServices::send_to_osd( - int peer, Ref m, epoch_t from_epoch) { +template +seastar::future<> ShardServices::do_send_to_osd( + int peer, MsgT m, epoch_t from_epoch) +{ if (osdmap->is_down(peer)) { logger().info("{}: osd.{} is_down", __func__, peer); return seastar::now(); @@ -97,10 +99,22 @@ seastar::future<> ShardServices::send_to_osd( } else { auto conn = cluster_msgr.connect( osdmap->get_cluster_addrs(peer).front(), CEPH_ENTITY_TYPE_OSD); - return conn->send(m); + return conn->send(std::move(m)); } } +seastar::future<> ShardServices::send_to_osd( + int peer, MessageRef m, epoch_t from_epoch) +{ + return do_send_to_osd(peer, std::move(m), from_epoch); +} + +seastar::future<> ShardServices::send_to_osd( + int peer, MessageURef m, epoch_t from_epoch) +{ + return do_send_to_osd(peer, std::move(m), from_epoch); +} + seastar::future<> ShardServices::dispatch_context_transaction( crimson::os::CollectionRef col, PeeringCtx &ctx) { auto ret = store.do_transaction( diff --git a/src/crimson/osd/shard_services.h b/src/crimson/osd/shard_services.h index 3bcf0d3e4e464..3e37f608e7c0b 100644 --- a/src/crimson/osd/shard_services.h +++ b/src/crimson/osd/shard_services.h @@ -59,6 +59,9 @@ class ShardServices : public md_config_obs_t { const char** get_tracked_conf_keys() const final; void handle_conf_change(const ConfigProxy& conf, const std::set &changed) final; + template + seastar::future<> do_send_to_osd(int peer, MsgT m, epoch_t from_epoch); + public: ShardServices( OSDMapService &osdmap_service, @@ -74,6 +77,11 @@ public: MessageRef m, epoch_t from_epoch); + seastar::future<> send_to_osd( + int peer, + MessageURef m, + epoch_t from_epoch); + crimson::os::FuturizedStore &get_store() { return store; } -- 2.39.5