From a7c8bfbea0b0eeb9fc12df97ac0d7b38d8eb3fe3 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 23 Feb 2012 16:30:42 -0800 Subject: [PATCH] osd: query Peering substates Signed-off-by: Sage Weil --- src/osd/PG.cc | 43 +++++++++++++++++++++++++++++++++++++++++++ src/osd/PG.h | 10 ++++++++++ 2 files changed, 53 insertions(+) diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 689df3369cfb7..ee8f519cd14ef 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -4399,6 +4399,17 @@ boost::statechart::result PG::RecoveryState::GetInfo::react(const MNotifyRec& in return discard_event(); } +boost::statechart::result PG::RecoveryState::GetInfo::react(const QueryState& q) +{ + PG *pg = context< RecoveryMachine >().pg; + q.ss << state_name << ":\n"; + q.ss << " requested pg_info from " << peer_info_requested << "\n"; + for (set::iterator p = peer_info_requested.begin(); p != peer_info_requested.end(); ++p) + if (pg->peer_info.count(*p)) + q.ss << " got osd." << *p << " " << pg->peer_info[*p] << "\n"; + return forward_event(); +} + void PG::RecoveryState::GetInfo::exit() { context< RecoveryMachine >().log_exit(state_name, enter_time); @@ -4477,6 +4488,13 @@ boost::statechart::result PG::RecoveryState::GetLog::react(const GotLog&) return transit< GetMissing >(); } +boost::statechart::result PG::RecoveryState::GetLog::react(const QueryState& q) +{ + q.ss << state_name << ":\n"; + q.ss << " getting log from osd." << newest_update_osd << "\n"; + return forward_event(); +} + void PG::RecoveryState::GetLog::exit() { context< RecoveryMachine >().log_exit(state_name, enter_time); @@ -4532,6 +4550,13 @@ boost::statechart::result PG::RecoveryState::WaitActingChange::react(const MNoti return discard_event(); } +boost::statechart::result PG::RecoveryState::WaitActingChange::react(const QueryState& q) +{ + q.ss << state_name << ":\n"; + q.ss << " waiting for pg acting set to change\n"; + return forward_event(); +} + void PG::RecoveryState::WaitActingChange::exit() { context< RecoveryMachine >().log_exit(state_name, enter_time); @@ -4639,6 +4664,17 @@ boost::statechart::result PG::RecoveryState::GetMissing::react(const MLogRec& lo return discard_event(); }; +boost::statechart::result PG::RecoveryState::GetMissing::react(const QueryState& q) +{ + PG *pg = context< RecoveryMachine >().pg; + q.ss << state_name << ":\n"; + q.ss << " requested missing set from osds " << peer_missing_requested << "\n"; + for (set::iterator p = peer_missing_requested.begin(); p != peer_missing_requested.end(); ++p) + if (pg->peer_missing.count(*p)) + q.ss << " got osd." << *p << " missing " << pg->peer_missing[*p].num_missing() << " objects\n"; + return forward_event(); +} + void PG::RecoveryState::GetMissing::exit() { context< RecoveryMachine >().log_exit(state_name, enter_time); @@ -4678,6 +4714,13 @@ boost::statechart::result PG::RecoveryState::WaitUpThru::react(const MLogRec& lo return discard_event(); } +boost::statechart::result PG::RecoveryState::WaitUpThru::react(const QueryState& q) +{ + q.ss << state_name << ":\n"; + q.ss << " waiting for osdmap to reflect a new up_thru for this osd\n"; + return forward_event(); +} + void PG::RecoveryState::WaitUpThru::exit() { context< RecoveryMachine >().log_exit(state_name, enter_time); diff --git a/src/osd/PG.h b/src/osd/PG.h index 46096245cf470..2efdf27d053d4 100644 --- a/src/osd/PG.h +++ b/src/osd/PG.h @@ -1061,12 +1061,14 @@ public: struct WaitActingChange : boost::statechart::state< WaitActingChange, Primary>, NamedState { typedef boost::mpl::list < + boost::statechart::custom_reaction< QueryState >, boost::statechart::custom_reaction< AdvMap >, boost::statechart::custom_reaction< MLogRec >, boost::statechart::custom_reaction< MInfoRec >, boost::statechart::custom_reaction< MNotifyRec > > reactions; WaitActingChange(my_context ctx); + boost::statechart::result react(const QueryState& q); boost::statechart::result react(const AdvMap&); boost::statechart::result react(const MLogRec&); boost::statechart::result react(const MInfoRec&); @@ -1167,9 +1169,11 @@ public: void get_infos(); typedef boost::mpl::list < + boost::statechart::custom_reaction< QueryState >, boost::statechart::transition< GotInfo, GetLog >, boost::statechart::custom_reaction< MNotifyRec > > reactions; + boost::statechart::result react(const QueryState& q); boost::statechart::result react(const MNotifyRec& infoevt); }; @@ -1187,9 +1191,11 @@ public: void exit(); typedef boost::mpl::list < + boost::statechart::custom_reaction< QueryState >, boost::statechart::custom_reaction< MLogRec >, boost::statechart::custom_reaction< GotLog > > reactions; + boost::statechart::result react(const QueryState& q); boost::statechart::result react(const MLogRec& logevt); boost::statechart::result react(const GotLog&); }; @@ -1203,9 +1209,11 @@ public: void exit(); typedef boost::mpl::list < + boost::statechart::custom_reaction< QueryState >, boost::statechart::custom_reaction< MLogRec >, boost::statechart::transition< NeedUpThru, WaitUpThru > > reactions; + boost::statechart::result react(const QueryState& q); boost::statechart::result react(const MLogRec& logevt); }; @@ -1214,9 +1222,11 @@ public: void exit(); typedef boost::mpl::list < + boost::statechart::custom_reaction< QueryState >, boost::statechart::custom_reaction< ActMap >, boost::statechart::custom_reaction< MLogRec > > reactions; + boost::statechart::result react(const QueryState& q); boost::statechart::result react(const ActMap& am); boost::statechart::result react(const MLogRec& logrec); }; -- 2.39.5