From 4884a28cd3a7abae8f48f45efc77eda50dd1e903 Mon Sep 17 00:00:00 2001 From: "sjust@redhat.com" Date: Wed, 27 Mar 2019 11:24:41 -0700 Subject: [PATCH] osd/: move check_full_transition to PeeringState Signed-off-by: sjust@redhat.com --- src/osd/PG.cc | 25 ------------------------- src/osd/PG.h | 1 - src/osd/PeeringState.cc | 31 +++++++++++++++++++++++++++++-- src/osd/PeeringState.h | 1 + 4 files changed, 30 insertions(+), 28 deletions(-) diff --git a/src/osd/PG.cc b/src/osd/PG.cc index dee66fd2d4d..4c30caead3a 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -5735,31 +5735,6 @@ void PG::fulfill_query(const MQuery& query, PeeringCtx *rctx) } } -void PG::check_full_transition(OSDMapRef lastmap, OSDMapRef osdmap) -{ - bool changed = false; - if (osdmap->test_flag(CEPH_OSDMAP_FULL) && - !lastmap->test_flag(CEPH_OSDMAP_FULL)) { - dout(10) << " cluster was marked full in " << osdmap->get_epoch() << dendl; - changed = true; - } - const pg_pool_t *pi = osdmap->get_pg_pool(info.pgid.pool()); - if (!pi) { - return; // pool deleted - } - if (pi->has_flag(pg_pool_t::FLAG_FULL)) { - const pg_pool_t *opi = lastmap->get_pg_pool(info.pgid.pool()); - if (!opi || !opi->has_flag(pg_pool_t::FLAG_FULL)) { - dout(10) << " pool was marked full in " << osdmap->get_epoch() << dendl; - changed = true; - } - } - if (changed) { - info.history.last_epoch_marked_full = osdmap->get_epoch(); - dirty_info = true; - } -} - bool PG::should_restart_peering( int newupprimary, int newactingprimary, diff --git a/src/osd/PG.h b/src/osd/PG.h index c89d6094746..a47d3db8ecd 100644 --- a/src/osd/PG.h +++ b/src/osd/PG.h @@ -1678,7 +1678,6 @@ protected: pair ¬ify_info); void fulfill_log(pg_shard_t from, const pg_query_t &query, epoch_t query_epoch); void fulfill_query(const MQuery& q, PeeringCtx *rctx); - void check_full_transition(OSDMapRef lastmap, OSDMapRef osdmap); bool should_restart_peering( int newupprimary, diff --git a/src/osd/PeeringState.cc b/src/osd/PeeringState.cc index 564ae421b58..9ee0924e90c 100644 --- a/src/osd/PeeringState.cc +++ b/src/osd/PeeringState.cc @@ -395,6 +395,33 @@ void PeeringState::complete_flush() } } +void PeeringState::check_full_transition(OSDMapRef lastmap, OSDMapRef osdmap) +{ + bool changed = false; + if (osdmap->test_flag(CEPH_OSDMAP_FULL) && + !lastmap->test_flag(CEPH_OSDMAP_FULL)) { + psdout(10) << " cluster was marked full in " + << osdmap->get_epoch() << dendl; + changed = true; + } + const pg_pool_t *pi = osdmap->get_pg_pool(info.pgid.pool()); + if (!pi) { + return; // pool deleted + } + if (pi->has_flag(pg_pool_t::FLAG_FULL)) { + const pg_pool_t *opi = lastmap->get_pg_pool(info.pgid.pool()); + if (!opi || !opi->has_flag(pg_pool_t::FLAG_FULL)) { + psdout(10) << " pool was marked full in " << osdmap->get_epoch() << dendl; + changed = true; + } + } + if (changed) { + info.history.last_epoch_marked_full = osdmap->get_epoch(); + dirty_info = true; + } +} + + /*------------ Peering State Machine----------------*/ #undef dout_prefix #define dout_prefix (context< PeeringMachine >().dpp->gen_prefix(*_dout) \ @@ -474,7 +501,7 @@ boost::statechart::result PeeringState::Started::react(const AdvMap& advmap) PeeringState *ps = context< PeeringMachine >().state; PG *pg = context< PeeringMachine >().pg; psdout(10) << "Started advmap" << dendl; - pg->check_full_transition(advmap.lastmap, advmap.osdmap); + ps->check_full_transition(advmap.lastmap, advmap.osdmap); if (pg->should_restart_peering( advmap.up_primary, advmap.acting_primary, @@ -534,7 +561,7 @@ boost::statechart::result PeeringState::Reset::react(const AdvMap& advmap) PG *pg = context< PeeringMachine >().pg; psdout(10) << "Reset advmap" << dendl; - pg->check_full_transition(advmap.lastmap, advmap.osdmap); + ps->check_full_transition(advmap.lastmap, advmap.osdmap); if (pg->should_restart_peering( advmap.up_primary, diff --git a/src/osd/PeeringState.h b/src/osd/PeeringState.h index 0389c792cde..9d8473057de 100644 --- a/src/osd/PeeringState.h +++ b/src/osd/PeeringState.h @@ -1160,6 +1160,7 @@ public: void update_history(const pg_history_t& new_history); void check_recovery_sources(const OSDMapRef& map); void set_last_peering_reset(); + void check_full_transition(OSDMapRef lastmap, OSDMapRef osdmap); public: PeeringState( -- 2.39.5