From: Samuel Just Date: Wed, 3 Apr 2019 00:45:23 +0000 (-0700) Subject: osd/: pass merge state control through PeeringListener X-Git-Tag: v15.1.0~2774^2~39 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=455741d0b25956e73334aaf41f9a7d8c7564c15f;p=ceph.git osd/: pass merge state control through PeeringListener Signed-off-by: Samuel Just --- diff --git a/src/osd/PG.cc b/src/osd/PG.cc index a5816ef6893f..d1e1196cf042 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -2629,6 +2629,21 @@ void PG::on_recovery_reserved() queue_recovery(); } +void PG::set_not_ready_to_merge_target(pg_t pgid, pg_t src) +{ + osd->set_not_ready_to_merge_target(pgid, src); +} + +void PG::set_not_ready_to_merge_source(pg_t pgid) +{ + osd->set_not_ready_to_merge_source(pgid); +} + +void PG::send_pg_created(pg_t pgid) +{ + osd->send_pg_created(pgid); +} + void PG::on_activate_committed() { if (!is_primary()) { diff --git a/src/osd/PG.h b/src/osd/PG.h index ecc2a3ad8005..48b57cef055c 100644 --- a/src/osd/PG.h +++ b/src/osd/PG.h @@ -487,6 +487,10 @@ public: void do_delete_work(ObjectStore::Transaction *t) override; + void set_not_ready_to_merge_target(pg_t pgid, pg_t src) override; + void set_not_ready_to_merge_source(pg_t pgid) override; + void send_pg_created(pg_t pgid) override; + void queue_peering_event(PGPeeringEventRef evt); void do_peering_event(PGPeeringEventRef evt, PeeringCtx *rcx); void queue_null(epoch_t msg_epoch, epoch_t query_epoch); diff --git a/src/osd/PeeringState.cc b/src/osd/PeeringState.cc index c45da33c537c..395e304adaed 100644 --- a/src/osd/PeeringState.cc +++ b/src/osd/PeeringState.cc @@ -4172,9 +4172,9 @@ boost::statechart::result PeeringState::Active::react(const AllReplicasActivated pg_t src = pgid; src.set_ps(ps->pool.info.get_pg_num_pending()); assert(src.get_parent() == pgid); - pg->osd->set_not_ready_to_merge_target(pgid, src); + pl->set_not_ready_to_merge_target(pgid, src); } else { - pg->osd->set_not_ready_to_merge_source(pgid); + pl->set_not_ready_to_merge_source(pgid); } } } else if (ps->acting.size() < ps->pool.info.min_size) { @@ -4184,7 +4184,7 @@ boost::statechart::result PeeringState::Active::react(const AllReplicasActivated } if (ps->pool.info.has_flag(pg_pool_t::FLAG_CREATING)) { - pg->osd->send_pg_created(pgid); + pl->send_pg_created(pgid); } ps->info.history.last_epoch_started = ps->info.last_epoch_started; diff --git a/src/osd/PeeringState.h b/src/osd/PeeringState.h index f24139b2d296..52c88711aea1 100644 --- a/src/osd/PeeringState.h +++ b/src/osd/PeeringState.h @@ -71,6 +71,7 @@ public: virtual void send_cluster_message( int osd, Message *m, epoch_t epoch, bool share_map_update=false) = 0; + virtual void send_pg_created(pg_t pgid) = 0; // Flush state virtual bool try_flush_or_schedule_async() = 0; @@ -134,6 +135,10 @@ public: virtual void on_removal(ObjectStore::Transaction *t) = 0; virtual void do_delete_work(ObjectStore::Transaction *t) = 0; + // PG Merge + virtual void set_not_ready_to_merge_target(pg_t pgid, pg_t src) = 0; + virtual void set_not_ready_to_merge_source(pg_t pgid) = 0; + // active map notifications virtual void on_active_actmap() = 0; virtual void on_active_advmap(const OSDMapRef &osdmap) = 0;