]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: PG::Interval -> pg_interval_t
authorSage Weil <sage@newdream.net>
Fri, 27 Apr 2012 16:51:30 +0000 (09:51 -0700)
committerSage Weil <sage.weil@dreamhost.com>
Sat, 28 Apr 2012 14:46:41 +0000 (07:46 -0700)
Signed-off-by: Sage Weil <sage@newdream.net>
src/osd/PG.cc
src/osd/PG.h
src/osd/osd_types.cc
src/osd/osd_types.h
src/test/encoding/types.h

index 0b83f7dcb85a9da0ea9b7849ee8746dbcc6b83f5..813f992786bbd13aef6808b1aac8bd88b28e4a22 100644 (file)
@@ -679,7 +679,7 @@ bool PG::needs_recovery() const
 void PG::generate_past_intervals()
 {
   // Do we already have the intervals we want?
-  map<epoch_t,Interval>::const_iterator pif = past_intervals.begin();
+  map<epoch_t,pg_interval_t>::const_iterator pif = past_intervals.begin();
   if (pif != past_intervals.end()) {
     if (pif->first <= info.history.last_epoch_clean) {
       dout(10) << __func__ << ": already have past intervals back to "
@@ -720,7 +720,7 @@ void PG::generate_past_intervals()
        break;
     }
 
-    Interval &i = past_intervals[first_epoch];
+    pg_interval_t &i = past_intervals[first_epoch];
     i.first = first_epoch;
     i.last = last_epoch;
     i.up.swap(tup);
@@ -769,8 +769,8 @@ void PG::generate_past_intervals()
  */
 void PG::trim_past_intervals()
 {
-  std::map<epoch_t,Interval>::iterator pif = past_intervals.begin();
-  std::map<epoch_t,Interval>::iterator end = past_intervals.end();
+  std::map<epoch_t,pg_interval_t>::iterator pif = past_intervals.begin();
+  std::map<epoch_t,pg_interval_t>::iterator end = past_intervals.end();
   while (pif != end) {
     if (pif->second.last >= info.history.last_epoch_clean)
       return;
@@ -1137,10 +1137,10 @@ void PG::build_might_have_unfound()
   generate_past_intervals();
 
   // We need to decide who might have unfound objects that we need
-  std::map<epoch_t,Interval>::const_reverse_iterator p = past_intervals.rbegin();
-  std::map<epoch_t,Interval>::const_reverse_iterator end = past_intervals.rend();
+  std::map<epoch_t,pg_interval_t>::const_reverse_iterator p = past_intervals.rbegin();
+  std::map<epoch_t,pg_interval_t>::const_reverse_iterator end = past_intervals.rend();
   for (; p != end; ++p) {
-    const Interval &interval(p->second);
+    const pg_interval_t &interval(p->second);
     // We already have all the objects that exist at last_epoch_clean,
     // so there's no need to look at earlier intervals.
     if (interval.last < info.history.last_epoch_clean)
@@ -3356,10 +3356,10 @@ bool PG::may_need_replay(const OSDMapRef osdmap) const
 {
   bool crashed = false;
 
-  for (map<epoch_t,Interval>::const_reverse_iterator p = past_intervals.rbegin();
+  for (map<epoch_t,pg_interval_t>::const_reverse_iterator p = past_intervals.rbegin();
        p != past_intervals.rend();
        p++) {
-    const Interval &interval = p->second;
+    const pg_interval_t &interval = p->second;
     dout(10) << "may_need_replay " << interval << dendl;
 
     if (interval.last < info.history.last_epoch_started)
@@ -3512,7 +3512,7 @@ void PG::start_peering_interval(const OSDMapRef lastmap,
     dirty_info = true;
   } else if (acting != oldacting || up != oldup) {
     // remember past interval
-    PG::Interval& i = past_intervals[info.history.same_interval_since];
+    pg_interval_t& i = past_intervals[info.history.same_interval_since];
     i.first = info.history.same_interval_since;
     i.last = osdmap->get_epoch() - 1;
     i.acting = oldacting;
@@ -4439,14 +4439,14 @@ boost::statechart::result PG::RecoveryState::GetInfo::react(const MNotifyRec& in
        * that interval.
        */
       if (pg->info.history.last_epoch_started) {
-       for (map<epoch_t,PG::Interval>::reverse_iterator p = pg->past_intervals.rbegin();
+       for (map<epoch_t,pg_interval_t>::reverse_iterator p = pg->past_intervals.rbegin();
             p != pg->past_intervals.rend();
             ++p) {
          if (p->first < pg->info.history.last_epoch_started)
            break;
          if (!p->second.maybe_went_rw)
            continue;
-         Interval& interval = p->second;
+         pg_interval_t& interval = p->second;
          dout(10) << " last maybe_went_rw interval was " << interval << dendl;
          OSDMapRef osdmap = pg->get_osdmap();
 
@@ -4969,7 +4969,7 @@ void PG::RecoveryState::handle_query_state(Formatter *f)
 #define dout_prefix (*_dout << (debug_pg ? debug_pg->gen_prefix() : string()) << " PriorSet: ")
 
 PG::PriorSet::PriorSet(const OSDMap &osdmap,
-                      const map<epoch_t, Interval> &past_intervals,
+                      const map<epoch_t, pg_interval_t> &past_intervals,
                       const vector<int> &up,
                       const vector<int> &acting,
                       const pg_info_t &info,
@@ -5030,10 +5030,10 @@ PG::PriorSet::PriorSet(const OSDMap &osdmap,
   for (unsigned i=0; i<up.size(); i++)
     probe.insert(up[i]);
 
-  for (map<epoch_t,Interval>::const_reverse_iterator p = past_intervals.rbegin();
+  for (map<epoch_t,pg_interval_t>::const_reverse_iterator p = past_intervals.rbegin();
        p != past_intervals.rend();
        p++) {
-    const Interval &interval = p->second;
+    const pg_interval_t &interval = p->second;
     dout(10) << "build_prior " << interval << dendl;
 
     if (interval.last < info.history.last_epoch_started)
index e8a31bbf982e6d275e1cbd47fae5a3a5f9a6807c..1fee39ecf72d50a30a4b438ee988e179eda79640 100644 (file)
@@ -400,56 +400,6 @@ public:
   bool dirty_info, dirty_log;
 
 public:
-  struct Interval {
-    vector<int> up, acting;
-    epoch_t first, last;
-    bool maybe_went_rw;
-
-    Interval() : first(0), last(0), maybe_went_rw(false) {}
-
-    void encode(bufferlist& bl) const {
-      ENCODE_START(2, 2, bl);
-      ::encode(first, bl);
-      ::encode(last, bl);
-      ::encode(up, bl);
-      ::encode(acting, bl);
-      ::encode(maybe_went_rw, bl);
-      ENCODE_FINISH(bl);
-    }
-    void decode(bufferlist::iterator& bl) {
-      DECODE_START_LEGACY_COMPAT_LEN(2, 2, 2, bl);
-      ::decode(first, bl);
-      ::decode(last, bl);
-      ::decode(up, bl);
-      ::decode(acting, bl);
-      ::decode(maybe_went_rw, bl);
-      DECODE_FINISH(bl);
-    }
-    void dump(Formatter *f) const {
-      f->dump_unsigned("first", first);
-      f->dump_unsigned("last", last);
-      f->dump_int("maybe_went_rw", maybe_went_rw ? 1 : 0);
-      f->open_array_section("up");
-      for (vector<int>::const_iterator p = up.begin(); p != up.end(); ++p)
-       f->dump_int("osd", *p);
-      f->close_section();
-      f->open_array_section("acting");
-      for (vector<int>::const_iterator p = acting.begin(); p != acting.end(); ++p)
-       f->dump_int("osd", *p);
-      f->close_section();
-    }
-    static void generate_test_instances(list<Interval*>& o) {
-      o.push_back(new Interval);
-      o.push_back(new Interval);
-      o.back()->up.push_back(1);
-      o.back()->acting.push_back(2);
-      o.back()->acting.push_back(3);
-      o.back()->first = 4;
-      o.back()->last = 5;
-      o.back()->maybe_went_rw = true;
-    }
-  };
-  WRITE_CLASS_ENCODER(Interval)
 
   // pg state
   pg_info_t        info;
@@ -463,7 +413,7 @@ public:
   set<int> missing_loc_sources;           // superset of missing_loc locations
   
   interval_set<snapid_t> snap_collections;
-  map<epoch_t,Interval> past_intervals;
+  map<epoch_t,pg_interval_t> past_intervals;
 
   interval_set<snapid_t> snap_trimq;
 
@@ -505,7 +455,7 @@ public:
 
     bool pg_down;   /// some down osds are included in @a cur; the DOWN pg state bit should be set.
     PriorSet(const OSDMap &osdmap,
-            const map<epoch_t, Interval> &past_intervals,
+            const map<epoch_t, pg_interval_t> &past_intervals,
             const vector<int> &up,
             const vector<int> &acting,
             const pg_info_t &info,
@@ -1458,18 +1408,8 @@ public:
                                    utime_t expire) = 0;
 };
 
-WRITE_CLASS_ENCODER(PG::Interval)
 WRITE_CLASS_ENCODER(PG::OndiskLog)
 
-inline ostream& operator<<(ostream& out, const PG::Interval& i)
-{
-  out << "interval(" << i.first << "-" << i.last << " " << i.up << "/" << i.acting;
-  if (i.maybe_went_rw)
-    out << " maybe_went_rw";
-  out << ")";
-  return out;
-}
-
 ostream& operator<<(ostream& out, const PG& pg);
 
 #endif
index 1a05e170265c7ffbd9e704a1b8981c9c2a2b3c53..f591f09a9f223fdd8b906b81443ddc2161a1e353 100644 (file)
@@ -1311,6 +1311,68 @@ void pg_info_t::generate_test_instances(list<pg_info_t*>& o)
 }
 
 
+// -- pg_interval_t --
+
+void pg_interval_t::encode(bufferlist& bl) const
+{
+  ENCODE_START(2, 2, bl);
+  ::encode(first, bl);
+  ::encode(last, bl);
+  ::encode(up, bl);
+  ::encode(acting, bl);
+  ::encode(maybe_went_rw, bl);
+  ENCODE_FINISH(bl);
+}
+
+void pg_interval_t::decode(bufferlist::iterator& bl)
+{
+  DECODE_START_LEGACY_COMPAT_LEN(2, 2, 2, bl);
+  ::decode(first, bl);
+  ::decode(last, bl);
+  ::decode(up, bl);
+  ::decode(acting, bl);
+  ::decode(maybe_went_rw, bl);
+  DECODE_FINISH(bl);
+}
+
+void pg_interval_t::dump(Formatter *f) const
+{
+  f->dump_unsigned("first", first);
+  f->dump_unsigned("last", last);
+  f->dump_int("maybe_went_rw", maybe_went_rw ? 1 : 0);
+  f->open_array_section("up");
+  for (vector<int>::const_iterator p = up.begin(); p != up.end(); ++p)
+    f->dump_int("osd", *p);
+  f->close_section();
+  f->open_array_section("acting");
+  for (vector<int>::const_iterator p = acting.begin(); p != acting.end(); ++p)
+    f->dump_int("osd", *p);
+  f->close_section();
+}
+
+void pg_interval_t::generate_test_instances(list<pg_interval_t*>& o)
+{
+  o.push_back(new pg_interval_t);
+  o.push_back(new pg_interval_t);
+  o.back()->up.push_back(1);
+  o.back()->acting.push_back(2);
+  o.back()->acting.push_back(3);
+  o.back()->first = 4;
+  o.back()->last = 5;
+  o.back()->maybe_went_rw = true;
+}
+
+ostream& operator<<(ostream& out, const pg_interval_t& i)
+{
+  out << "interval(" << i.first << "-" << i.last << " " << i.up << "/" << i.acting;
+  if (i.maybe_went_rw)
+    out << " maybe_went_rw";
+  out << ")";
+  return out;
+}
+
+
+
 // -- pg_query_t --
 
 void pg_query_t::dump(Formatter *f) const
index 66a7aff5a09798c2713040bab778d4d3fe22fd4a..4381b1dec6bb5b50aefbac00d134c30e4f8bee0d 100644 (file)
@@ -1037,6 +1037,28 @@ inline ostream& operator<<(ostream& out, const pg_info_t& pgi)
 }
 
 
+/**
+ * pg_interval_t - information about a past interval
+ */
+struct pg_interval_t {
+  vector<int> up, acting;
+  epoch_t first, last;
+  bool maybe_went_rw;
+
+  pg_interval_t() : first(0), last(0), maybe_went_rw(false) {}
+
+  void encode(bufferlist& bl) const;
+  void decode(bufferlist::iterator& bl);
+  void dump(Formatter *f) const;
+  static void generate_test_instances(list<pg_interval_t*>& o);
+};
+WRITE_CLASS_ENCODER(pg_interval_t)
+
+ostream& operator<<(ostream& out, const pg_interval_t& i);
+
+typedef map<epoch_t, pg_interval_t> pg_interval_map_t;
+
+
 /** 
  * pg_query_t - used to ask a peer for information about a pg.
  *
index 245d4fe0a055562b17f27cbeea25b1bf570f38b6..5b50147c5207022dff0d7ed0c06699418a6fdf33 100644 (file)
@@ -26,7 +26,6 @@ TYPE(OSDMap::Incremental)
 TYPE(CrushWrapper)
 
 #include "osd/PG.h"
-TYPE(PG::Interval)
 TYPE(PG::OndiskLog)
 
 #include "osd/osd_types.h"
@@ -44,6 +43,7 @@ TYPE(pg_stat_t)
 TYPE(pool_stat_t)
 TYPE(pg_history_t)
 TYPE(pg_info_t)
+TYPE(pg_interval_t)
 TYPE(pg_query_t)
 TYPE(pg_log_entry_t)
 TYPE(pg_log_t)