From: Samuel Just Date: Fri, 12 Apr 2019 22:33:29 +0000 (-0700) Subject: osd/: move share_pg_info to PeeringState X-Git-Tag: v15.1.0~2774^2~46 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3e738e7b645e8b1fcc8313660270d82ad932465d;p=ceph.git osd/: move share_pg_info to PeeringState Signed-off-by: Samuel Just --- diff --git a/src/osd/PG.cc b/src/osd/PG.cc index ddf5cf20f21f..dcb6331470f0 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -597,7 +597,7 @@ void PG::try_mark_clean() state_clear(PG_STATE_FORCED_RECOVERY | PG_STATE_FORCED_BACKFILL); - share_pg_info(); + recovery_state.share_pg_info(); publish_stats_to_osd(); requeue_ops(waiting_for_clean_to_primary_repair); } @@ -4188,36 +4188,7 @@ void PG::scrub_finish() scrub_unreserve_replicas(); if (is_active() && is_primary()) { - share_pg_info(); - } -} - -void PG::share_pg_info() -{ - dout(10) << "share_pg_info" << dendl; - - // share new pg_info_t with replicas - ceph_assert(!acting_recovery_backfill.empty()); - for (set::iterator i = acting_recovery_backfill.begin(); - i != acting_recovery_backfill.end(); - ++i) { - if (*i == pg_whoami) continue; - auto pg_shard = *i; - auto peer = peer_info.find(pg_shard); - if (peer != peer_info.end()) { - peer->second.last_epoch_started = info.last_epoch_started; - peer->second.last_interval_started = info.last_interval_started; - peer->second.history.merge(info.history); - } - MOSDPGInfo *m = new MOSDPGInfo(get_osdmap_epoch()); - m->pg_list.emplace_back( - pg_notify_t( - pg_shard.shard, pg_whoami.shard, - get_osdmap_epoch(), - get_osdmap_epoch(), - info), - past_intervals); - osd->send_message_osd_cluster(pg_shard.osd, m, get_osdmap_epoch()); + recovery_state.share_pg_info(); } } diff --git a/src/osd/PG.h b/src/osd/PG.h index 53e6f73521c1..2c7a0f986cc7 100644 --- a/src/osd/PG.h +++ b/src/osd/PG.h @@ -1531,10 +1531,6 @@ protected: bool queue_scrub(); unsigned get_scrub_priority(); - /// share pg info after a pg is active - void share_pg_info(); - - bool append_log_entries_update_missing( const mempool::osd_pglog::list &entries, ObjectStore::Transaction &t, diff --git a/src/osd/PeeringState.cc b/src/osd/PeeringState.cc index d66d83613b74..0166912c77e8 100644 --- a/src/osd/PeeringState.cc +++ b/src/osd/PeeringState.cc @@ -2334,6 +2334,35 @@ void PeeringState::activate( } } +void PeeringState::share_pg_info() +{ + psdout(10) << "share_pg_info" << dendl; + + // share new pg_info_t with replicas + ceph_assert(!acting_recovery_backfill.empty()); + for (set::iterator i = acting_recovery_backfill.begin(); + i != acting_recovery_backfill.end(); + ++i) { + if (*i == pg_whoami) continue; + auto pg_shard = *i; + auto peer = peer_info.find(pg_shard); + if (peer != peer_info.end()) { + peer->second.last_epoch_started = info.last_epoch_started; + peer->second.last_interval_started = info.last_interval_started; + peer->second.history.merge(info.history); + } + MOSDPGInfo *m = new MOSDPGInfo(get_osdmap_epoch()); + m->pg_list.emplace_back( + pg_notify_t( + pg_shard.shard, pg_whoami.shard, + get_osdmap_epoch(), + get_osdmap_epoch(), + info), + past_intervals); + pl->send_cluster_message(pg_shard.osd, m, get_osdmap_epoch()); + } +} + /*------------ Peering State Machine----------------*/ #undef dout_prefix #define dout_prefix (context< PeeringMachine >().dpp->gen_prefix(*_dout) \ @@ -3689,7 +3718,7 @@ boost::statechart::result PeeringState::Active::react(const AdvMap& advmap) // purged snaps and (b) perhaps share more snaps that we have purged // but didn't fit in pg_stat_t. need_publish = true; - pg->share_pg_info(); + ps->share_pg_info(); } for (size_t i = 0; i < ps->want_acting.size(); i++) { @@ -3938,7 +3967,7 @@ boost::statechart::result PeeringState::Active::react(const AllReplicasActivated ps->info.history.last_interval_started = ps->info.last_interval_started; ps->dirty_info = true; - pg->share_pg_info(); + ps->share_pg_info(); pl->publish_stats_to_osd(); pl->on_activate_complete(); diff --git a/src/osd/PeeringState.h b/src/osd/PeeringState.h index 6313136dffa3..1549628b6427 100644 --- a/src/osd/PeeringState.h +++ b/src/osd/PeeringState.h @@ -1346,6 +1346,7 @@ public: map >& query_map, map > > *activator_map, PeeringCtx *ctx); + void share_pg_info(); public: PeeringState( diff --git a/src/osd/PrimaryLogPG.cc b/src/osd/PrimaryLogPG.cc index b24b2ec31b82..b2b9c914ea19 100644 --- a/src/osd/PrimaryLogPG.cc +++ b/src/osd/PrimaryLogPG.cc @@ -15180,7 +15180,7 @@ void PrimaryLogPG::_scrub_finish() info.stats.pin_stats_invalid = false; info.stats.manifest_stats_invalid = false; publish_stats_to_osd(); - share_pg_info(); + recovery_state.share_pg_info(); } } // Clear object context cache to get repair information @@ -15373,7 +15373,7 @@ boost::statechart::result PrimaryLogPG::AwaitAsyncWork::react(const DoSnapWork&) int tr = pg->osd->store->queue_transaction(pg->ch, std::move(t), NULL); ceph_assert(tr == 0); - pg->share_pg_info(); + pg->recovery_state.share_pg_info(); post_event(KickTrim()); return transit< NotTrimming >(); }