From: Samuel Just Date: Fri, 24 Jun 2022 22:02:06 +0000 (-0700) Subject: crimson/osd/osd_operations/peering_event: remove shard_services from constructor X-Git-Tag: v18.0.0~483^2~8 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=01472f5fd553b1c911dd2e34c613110237f534e7;p=ceph.git crimson/osd/osd_operations/peering_event: remove shard_services from constructor We'll want to supply this as part of with_pg_operation etc. Signed-off-by: Samuel Just --- diff --git a/src/crimson/osd/osd.cc b/src/crimson/osd/osd.cc index e9b792ed7fed..979fd138b7bc 100644 --- a/src/crimson/osd/osd.cc +++ b/src/crimson/osd/osd.cc @@ -1309,7 +1309,6 @@ seastar::future<> OSD::handle_scrub(crimson::net::ConnectionRef conn, PeeringState::RequestScrub scrub_request{m->deep, m->repair}; return start_pg_operation( conn, - shard_services, from_shard, pgid, PGPeeringEvent{m->epoch, m->epoch, scrub_request}).second; @@ -1419,7 +1418,6 @@ seastar::future<> OSD::handle_peering_op( std::unique_ptr evt(m->get_event()); (void) start_pg_operation( conn, - shard_services, pg_shard_t{from, m->get_spg().shard}, m->get_spg(), std::move(*evt)); diff --git a/src/crimson/osd/osd_operations/compound_peering_request.cc b/src/crimson/osd/osd_operations/compound_peering_request.cc index ec6487dfa21b..b630fc2b7600 100644 --- a/src/crimson/osd/osd_operations/compound_peering_request.cc +++ b/src/crimson/osd/osd_operations/compound_peering_request.cc @@ -44,7 +44,9 @@ public: RemotePeeringEvent(std::forward(args)...), state(state) {} PeeringEvent::interruptible_future<> - complete_rctx(Ref pg) final { + complete_rctx( + ShardServices &shard_services, + Ref pg) final { logger().debug("{}: submitting ctx transaction", *this); state->ctx.accept_buffered_messages(ctx); state = {}; @@ -86,7 +88,6 @@ std::vector handle_pg_create( auto op = osd.start_pg_operation( state, conn, - osd.get_shard_services(), pg_shard_t(), pgid, m->epoch, diff --git a/src/crimson/osd/osd_operations/peering_event.cc b/src/crimson/osd/osd_operations/peering_event.cc index 1347a2dc6849..e84439b76727 100644 --- a/src/crimson/osd/osd_operations/peering_event.cc +++ b/src/crimson/osd/osd_operations/peering_event.cc @@ -58,9 +58,9 @@ seastar::future<> PeeringEvent::with_pg( { if (!pg) { logger().warn("{}: pg absent, did not create", *this); - on_pg_absent(); + on_pg_absent(shard_services); that()->get_handle().exit(); - return complete_rctx_no_pg(); + return complete_rctx_no_pg(shard_services); } using interruptor = typename T::interruptor; @@ -81,10 +81,10 @@ seastar::future<> PeeringEvent::with_pg( // recovery. return this->template enter_stage( BackfillRecovery::bp(*pg).process); - }).then_interruptible([this, pg] { + }).then_interruptible([this, pg, &shard_services] { pg->do_peering_event(evt, ctx); that()->get_handle().exit(); - return complete_rctx(pg); + return complete_rctx(shard_services, pg); }).then_interruptible([pg, &shard_services]() -> typename T::template interruptible_future<> { if (!pg->get_need_up_thru()) { @@ -100,14 +100,14 @@ seastar::future<> PeeringEvent::with_pg( } template -void PeeringEvent::on_pg_absent() +void PeeringEvent::on_pg_absent(ShardServices &) { logger().debug("{}: pg absent, dropping", *this); } template typename PeeringEvent::template interruptible_future<> -PeeringEvent::complete_rctx(Ref pg) +PeeringEvent::complete_rctx(ShardServices &shard_services, Ref pg) { logger().debug("{}: submitting ctx", *this); return shard_services.dispatch_context( @@ -120,7 +120,7 @@ ConnectionPipeline &RemotePeeringEvent::get_connection_pipeline() return get_osd_priv(conn.get()).peering_request_conn_pipeline; } -void RemotePeeringEvent::on_pg_absent() +void RemotePeeringEvent::on_pg_absent(ShardServices &shard_services) { if (auto& e = get_event().get_event(); e.dynamic_type() == MQuery::static_type()) { @@ -143,16 +143,19 @@ void RemotePeeringEvent::on_pg_absent() } } -RemotePeeringEvent::interruptible_future<> RemotePeeringEvent::complete_rctx(Ref pg) +RemotePeeringEvent::interruptible_future<> RemotePeeringEvent::complete_rctx( + ShardServices &shard_services, + Ref pg) { if (pg) { - return PeeringEvent::complete_rctx(pg); + return PeeringEvent::complete_rctx(shard_services, pg); } else { return shard_services.dispatch_context_messages(std::move(ctx)); } } -seastar::future<> RemotePeeringEvent::complete_rctx_no_pg() +seastar::future<> RemotePeeringEvent::complete_rctx_no_pg( + ShardServices &shard_services) { return shard_services.dispatch_context_messages(std::move(ctx)); } @@ -168,7 +171,7 @@ seastar::future<> LocalPeeringEvent::start() std::chrono::milliseconds(std::lround(delay * 1000))); } return maybe_delay.then([this] { - return with_pg(shard_services, pg); + return with_pg(pg->get_shard_services(), pg); }).finally([ref=std::move(ref)] { logger().debug("{}: complete", *ref); }); diff --git a/src/crimson/osd/osd_operations/peering_event.h b/src/crimson/osd/osd_operations/peering_event.h index 65b9e9e79633..4ccbf3f27fa4 100644 --- a/src/crimson/osd/osd_operations/peering_event.h +++ b/src/crimson/osd/osd_operations/peering_event.h @@ -52,7 +52,6 @@ public: protected: PGPeeringPipeline &pp(PG &pg); - ShardServices &shard_services; PeeringCtx ctx; pg_shard_t from; spg_t pgid; @@ -71,28 +70,28 @@ protected: return evt; } - virtual void on_pg_absent(); + virtual void on_pg_absent(ShardServices &); virtual typename PeeringEvent::template interruptible_future<> - complete_rctx(Ref); + complete_rctx(ShardServices &, Ref); - virtual seastar::future<> complete_rctx_no_pg() { return seastar::now();} + virtual seastar::future<> complete_rctx_no_pg( + ShardServices &shard_services + ) { return seastar::now();} public: template PeeringEvent( - ShardServices &shard_services, const pg_shard_t &from, const spg_t &pgid, + const pg_shard_t &from, const spg_t &pgid, Args&&... args) : - shard_services(shard_services), from(from), pgid(pgid), evt(std::forward(args)...) {} template PeeringEvent( - ShardServices &shard_services, const pg_shard_t &from, const spg_t &pgid, + const pg_shard_t &from, const spg_t &pgid, float delay, Args&&... args) : - shard_services(shard_services), from(from), pgid(pgid), delay(delay), @@ -111,9 +110,13 @@ protected: // must be after conn due to ConnectionPipeline's life-time PipelineHandle handle; - void on_pg_absent() final; - PeeringEvent::interruptible_future<> complete_rctx(Ref pg) override; - seastar::future<> complete_rctx_no_pg() override; + void on_pg_absent(ShardServices &) final; + PeeringEvent::interruptible_future<> complete_rctx( + ShardServices &shard_services, + Ref pg) override; + seastar::future<> complete_rctx_no_pg( + ShardServices &shard_services + ) override; public: class OSDPipeline { diff --git a/src/crimson/osd/pg.cc b/src/crimson/osd/pg.cc index e3d70901580e..33eeb4307865 100644 --- a/src/crimson/osd/pg.cc +++ b/src/crimson/osd/pg.cc @@ -137,7 +137,6 @@ bool PG::try_flush_or_schedule_async() { [this, epoch=get_osdmap_epoch()]() { return shard_services.start_operation( this, - shard_services, pg_whoami, pgid, epoch, @@ -176,7 +175,6 @@ void PG::queue_check_readable(epoch_t last_peering_reset, ceph::timespan delay) check_readable_timer.set_callback([last_peering_reset, this] { (void) shard_services.start_operation( this, - shard_services, pg_whoami, pgid, last_peering_reset, @@ -266,7 +264,6 @@ void PG::on_activate_complete() __func__); (void) shard_services.start_operation( this, - shard_services, pg_whoami, pgid, float(0.001), @@ -278,7 +275,6 @@ void PG::on_activate_complete() __func__); (void) shard_services.start_operation( this, - shard_services, pg_whoami, pgid, float(0.001), @@ -290,7 +286,6 @@ void PG::on_activate_complete() " for pg: {}", __func__, pgid); (void) shard_services.start_operation( this, - shard_services, pg_whoami, pgid, float(0.001), @@ -397,7 +392,6 @@ void PG::schedule_renew_lease(epoch_t last_peering_reset, ceph::timespan delay) renew_lease_timer.set_callback([last_peering_reset, this] { (void) shard_services.start_operation( this, - shard_services, pg_whoami, pgid, last_peering_reset, @@ -459,7 +453,6 @@ seastar::future<> PG::read_state(crimson::os::FuturizedStore* store) epoch_t epoch = get_osdmap_epoch(); (void) shard_services.start_operation( this, - shard_services, pg_whoami, pgid, epoch, diff --git a/src/crimson/osd/pg.h b/src/crimson/osd/pg.h index f1c474b0675b..236a92b30405 100644 --- a/src/crimson/osd/pg.h +++ b/src/crimson/osd/pg.h @@ -203,7 +203,6 @@ public: void start_peering_event_operation(T &&evt, float delay = 0) { (void) shard_services.start_operation( this, - shard_services, pg_whoami, pgid, delay, diff --git a/src/crimson/osd/pg_recovery.cc b/src/crimson/osd/pg_recovery.cc index ccdd4980afb6..9264dda56e10 100644 --- a/src/crimson/osd/pg_recovery.cc +++ b/src/crimson/osd/pg_recovery.cc @@ -73,7 +73,6 @@ PGRecovery::start_recovery_ops( pg->get_pgid()); (void) pg->get_shard_services().start_operation( static_cast(pg), - pg->get_shard_services(), pg->get_pg_whoami(), pg->get_pgid(), pg->get_osdmap_epoch(), @@ -84,7 +83,6 @@ PGRecovery::start_recovery_ops( pg->get_pgid()); (void) pg->get_shard_services().start_operation( static_cast(pg), - pg->get_shard_services(), pg->get_pg_whoami(), pg->get_pgid(), pg->get_osdmap_epoch(), @@ -534,7 +532,6 @@ void PGRecovery::backfilled() using LocalPeeringEvent = crimson::osd::LocalPeeringEvent; std::ignore = pg->get_shard_services().start_operation( static_cast(pg), - pg->get_shard_services(), pg->get_pg_whoami(), pg->get_pgid(), pg->get_osdmap_epoch(), diff --git a/src/crimson/osd/recovery_backend.cc b/src/crimson/osd/recovery_backend.cc index 040cf0d88b2b..24d7d00477d6 100644 --- a/src/crimson/osd/recovery_backend.cc +++ b/src/crimson/osd/recovery_backend.cc @@ -81,7 +81,6 @@ void RecoveryBackend::handle_backfill_finish( std::ignore = m.get_connection()->send(std::move(reply)); shard_services.start_operation( static_cast(&pg), - shard_services, pg.get_pg_whoami(), pg.get_pgid(), pg.get_osdmap_epoch(), @@ -226,7 +225,6 @@ RecoveryBackend::handle_scan_get_digest( std::ignore = shard_services.start_operation( // TODO: abstract start_background_recovery static_cast(&pg), - shard_services, pg.get_pg_whoami(), pg.get_pgid(), pg.get_osdmap_epoch(),