From 2a5f3b7ee785cf0cf780150430e9c51e20fd3169 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Wed, 26 Aug 2020 22:53:51 +0800 Subject: [PATCH] messages,osd,crimson: MOSDPGPull::set_pulls(vector<>&&) this allows us to pass a lvalue reference to it. Signed-off-by: Kefu Chai --- src/crimson/osd/replicated_recovery_backend.cc | 9 +++------ src/messages/MOSDPGPull.h | 4 ++-- src/osd/ReplicatedBackend.cc | 4 ++-- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/crimson/osd/replicated_recovery_backend.cc b/src/crimson/osd/replicated_recovery_backend.cc index 6013564b60380..8615ee8605152 100644 --- a/src/crimson/osd/replicated_recovery_backend.cc +++ b/src/crimson/osd/replicated_recovery_backend.cc @@ -97,9 +97,7 @@ ReplicatedRecoveryBackend::maybe_pull_missing_obj( msg->pgid = pg.get_pgid(); msg->map_epoch = pg.get_osdmap_epoch(); msg->min_epoch = pg.get_last_peering_reset(); - std::vector pulls; - pulls.push_back(po); - msg->set_pulls(&pulls); + msg->set_pulls({std::move(po)}); return shard_services.send_to_osd( pi.from.osd, std::move(msg), @@ -744,7 +742,7 @@ seastar::future<> ReplicatedRecoveryBackend::handle_pull_response( }).then([this, m, &response](bool complete) { if (complete) { auto& pop = m->pushes[0]; - recovering[pop.soid].set_pulled(); + recovering.at(pop.soid).set_pulled(); return seastar::make_ready_future<>(); } else { auto reply = make_message(); @@ -753,8 +751,7 @@ seastar::future<> ReplicatedRecoveryBackend::handle_pull_response( reply->pgid = pg.get_info().pgid; reply->map_epoch = m->map_epoch; reply->min_epoch = m->min_epoch; - vector vec = { std::move(response) }; - reply->set_pulls(&vec); + reply->set_pulls({std::move(response)}); return shard_services.send_to_osd(m->from.osd, std::move(reply), pg.get_osdmap_epoch()); } }); diff --git a/src/messages/MOSDPGPull.h b/src/messages/MOSDPGPull.h index 37c286a0a1ec3..877f199ed2bbc 100644 --- a/src/messages/MOSDPGPull.h +++ b/src/messages/MOSDPGPull.h @@ -43,8 +43,8 @@ public: void take_pulls(std::vector *outpulls) { outpulls->swap(pulls); } - void set_pulls(std::vector *inpulls) { - inpulls->swap(pulls); + void set_pulls(std::vector&& pull_ops) { + pulls = std::move(pull_ops); } MOSDPGPull() diff --git a/src/osd/ReplicatedBackend.cc b/src/osd/ReplicatedBackend.cc index c59447985c620..7c71aa26fe7a2 100644 --- a/src/osd/ReplicatedBackend.cc +++ b/src/osd/ReplicatedBackend.cc @@ -881,7 +881,7 @@ void ReplicatedBackend::_do_pull_response(OpRequestRef op) reply->pgid = get_info().pgid; reply->map_epoch = m->map_epoch; reply->min_epoch = m->min_epoch; - reply->set_pulls(&replies); + reply->set_pulls(std::move(replies)); reply->compute_cost(cct); t.register_on_complete( @@ -2003,7 +2003,7 @@ void ReplicatedBackend::send_pulls(int prio, map > &p msg->pgid = get_parent()->primary_spg_t(); msg->map_epoch = get_osdmap_epoch(); msg->min_epoch = get_parent()->get_last_peering_reset_epoch(); - msg->set_pulls(&i->second); + msg->set_pulls(std::move(i->second)); msg->compute_cost(cct); get_parent()->send_message_osd_cluster(msg, con); } -- 2.39.5