]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: query Peering substates
authorSage Weil <sage@newdream.net>
Fri, 24 Feb 2012 00:30:42 +0000 (16:30 -0800)
committerSage Weil <sage.weil@dreamhost.com>
Fri, 24 Feb 2012 19:33:57 +0000 (11:33 -0800)
Signed-off-by: Sage Weil <sage@newdream.net>
src/osd/PG.cc
src/osd/PG.h

index 689df3369cfb75550991ff1a156949618d4ecb3c..ee8f519cd14efc90d03fad3916e28ea9b44bb60e 100644 (file)
@@ -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<int>::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<int>::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);
index 46096245cf4700fa980809f99c0189cd4eec2646..2efdf27d053d4c7a59c6693b525a6dce6b908289 100644 (file)
@@ -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);
     };