From: Samuel Just Date: Tue, 6 Sep 2022 23:45:32 +0000 (+0000) Subject: crimson/osd/osd_operations: use foreign_ptr for conn X-Git-Tag: v18.1.0~1115^2~12 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a9684d4665ae38ba9a6bdadb3fd483bc144c3c35;p=ceph.git crimson/osd/osd_operations: use foreign_ptr for conn Signed-off-by: Samuel Just --- diff --git a/src/crimson/osd/osd.cc b/src/crimson/osd/osd.cc index f3a91085d13..c7e9b1433de 100644 --- a/src/crimson/osd/osd.cc +++ b/src/crimson/osd/osd.cc @@ -1115,10 +1115,10 @@ seastar::future<> OSD::handle_rep_op_reply(crimson::net::ConnectionRef conn, spg_t pgid = m->get_spg(); return pg_shard_manager.with_pg( pgid, - [conn=std::move(conn), m=std::move(m)](auto &&pg) { + [m=std::move(m)](auto &&pg) { if (pg) { m->finish_decode(); - pg->handle_rep_op_reply(conn, *m); + pg->handle_rep_op_reply(*m); } else { logger().warn("stale reply: {}", *m); } diff --git a/src/crimson/osd/osd_operations/client_request.h b/src/crimson/osd/osd_operations/client_request.h index 32a2b81fd3e..fafcc516532 100644 --- a/src/crimson/osd/osd_operations/client_request.h +++ b/src/crimson/osd/osd_operations/client_request.h @@ -29,7 +29,8 @@ class ShardServices; class ClientRequest final : public PhasedOperationT, private CommonClientRequest { OSD &osd; - const crimson::net::ConnectionRef conn; + crimson::net::ConnectionFRef conn; + // must be after conn due to ConnectionPipeline's life-time Ref m; OpInfo op_info; diff --git a/src/crimson/osd/osd_operations/logmissing_request.h b/src/crimson/osd/osd_operations/logmissing_request.h index ba6defcd3a3..4fae50e4f4f 100644 --- a/src/crimson/osd/osd_operations/logmissing_request.h +++ b/src/crimson/osd/osd_operations/logmissing_request.h @@ -61,7 +61,7 @@ public: private: RepRequest::PGPipeline &pp(PG &pg); - crimson::net::ConnectionRef conn; + crimson::net::ConnectionFRef conn; // must be after `conn` to ensure the ConnectionPipeline's is alive PipelineHandle handle; Ref req; diff --git a/src/crimson/osd/osd_operations/logmissing_request_reply.h b/src/crimson/osd/osd_operations/logmissing_request_reply.h index cadec4a9acc..a3615f3c009 100644 --- a/src/crimson/osd/osd_operations/logmissing_request_reply.h +++ b/src/crimson/osd/osd_operations/logmissing_request_reply.h @@ -61,7 +61,7 @@ public: private: RepRequest::PGPipeline &pp(PG &pg); - crimson::net::ConnectionRef conn; + crimson::net::ConnectionFRef conn; // must be after `conn` to ensure the ConnectionPipeline's is alive PipelineHandle handle; Ref req; diff --git a/src/crimson/osd/osd_operations/peering_event.h b/src/crimson/osd/osd_operations/peering_event.h index 4ccbf3f27fa..c243c04d903 100644 --- a/src/crimson/osd/osd_operations/peering_event.h +++ b/src/crimson/osd/osd_operations/peering_event.h @@ -106,7 +106,7 @@ public: class RemotePeeringEvent : public PeeringEvent { protected: - crimson::net::ConnectionRef conn; + crimson::net::ConnectionFRef conn; // must be after conn due to ConnectionPipeline's life-time PipelineHandle handle; diff --git a/src/crimson/osd/osd_operations/recovery_subrequest.h b/src/crimson/osd/osd_operations/recovery_subrequest.h index e629b055faa..f1c0bc775e6 100644 --- a/src/crimson/osd/osd_operations/recovery_subrequest.h +++ b/src/crimson/osd/osd_operations/recovery_subrequest.h @@ -55,7 +55,7 @@ public: > tracking_events; private: - crimson::net::ConnectionRef conn; + crimson::net::ConnectionFRef conn; // must be after `conn` to ensure the ConnectionPipeline's is alive PipelineHandle handle; Ref m; diff --git a/src/crimson/osd/osd_operations/replicated_request.h b/src/crimson/osd/osd_operations/replicated_request.h index 33ea8a86ca1..b04ee0f9388 100644 --- a/src/crimson/osd/osd_operations/replicated_request.h +++ b/src/crimson/osd/osd_operations/replicated_request.h @@ -60,7 +60,7 @@ public: private: PGPipeline &pp(PG &pg); - crimson::net::ConnectionRef conn; + crimson::net::ConnectionFRef conn; PipelineHandle handle; Ref req; }; diff --git a/src/crimson/osd/pg.cc b/src/crimson/osd/pg.cc index bd22756fdf5..759ae2e3f98 100644 --- a/src/crimson/osd/pg.cc +++ b/src/crimson/osd/pg.cc @@ -1256,8 +1256,7 @@ PG::interruptible_future<> PG::handle_rep_op(Ref req) }); } -void PG::handle_rep_op_reply(crimson::net::ConnectionRef conn, - const MOSDRepOpReply& m) +void PG::handle_rep_op_reply(const MOSDRepOpReply& m) { if (!can_discard_replica_op(m)) { backend->got_rep_op_reply(m); diff --git a/src/crimson/osd/pg.h b/src/crimson/osd/pg.h index 98e2d2103bc..174a64183a7 100644 --- a/src/crimson/osd/pg.h +++ b/src/crimson/osd/pg.h @@ -554,8 +554,7 @@ public: with_obc_func_t&& f); interruptible_future<> handle_rep_op(Ref m); - void handle_rep_op_reply(crimson::net::ConnectionRef conn, - const MOSDRepOpReply& m); + void handle_rep_op_reply(const MOSDRepOpReply& m); interruptible_future<> do_update_log_missing(Ref m); interruptible_future<> do_update_log_missing_reply( Ref m);