]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/PGMap: include timestamp
authorSage Weil <sage@inktank.com>
Sat, 26 Jan 2013 03:50:45 +0000 (19:50 -0800)
committerSage Weil <sage@inktank.com>
Tue, 29 Jan 2013 02:50:03 +0000 (18:50 -0800)
Signed-off-by: Sage Weil <sage@inktank.com>
src/mon/PGMap.cc
src/mon/PGMap.h
src/mon/PGMonitor.cc

index 938e2862aaa315ac0b32b0e07b329735c3bff19c..e76130d07cb02c7c25a83e37cefc5a684b75655e 100644 (file)
@@ -28,7 +28,7 @@ void PGMap::Incremental::encode(bufferlist &bl, uint64_t features) const
     return;
   }
 
-  ENCODE_START(5, 5, bl);
+  ENCODE_START(6, 5, bl);
   ::encode(version, bl);
   ::encode(pg_stat_updates, bl);
   ::encode(osd_stat_updates, bl);
@@ -38,12 +38,13 @@ void PGMap::Incremental::encode(bufferlist &bl, uint64_t features) const
   ::encode(full_ratio, bl);
   ::encode(nearfull_ratio, bl);
   ::encode(pg_remove, bl);
+  ::encode(stamp, bl);
   ENCODE_FINISH(bl);
 }
 
 void PGMap::Incremental::decode(bufferlist::iterator &bl)
 {
-  DECODE_START_LEGACY_COMPAT_LEN(5, 5, 5, bl);
+  DECODE_START_LEGACY_COMPAT_LEN(6, 5, 5, bl);
   ::decode(version, bl);
   if (struct_v < 3) {
     pg_stat_updates.clear();
@@ -84,12 +85,15 @@ void PGMap::Incremental::decode(bufferlist::iterator &bl)
   if (struct_v < 4 && nearfull_ratio == 0) {
     nearfull_ratio = -1;
   }
+  if (struct_v >= 6)
+    ::decode(stamp, bl);
   DECODE_FINISH(bl);
 }
 
 void PGMap::Incremental::dump(Formatter *f) const
 {
   f->dump_unsigned("version", version);
+  f->dump_stream("stamp") << stamp;
   f->dump_unsigned("osdmap_epoch", osdmap_epoch);
   f->dump_unsigned("pg_scan_epoch", pg_scan);
   f->dump_float("full_ratio", full_ratio);
@@ -129,6 +133,7 @@ void PGMap::Incremental::generate_test_instances(list<PGMap::Incremental*>& o)
   o.push_back(new Incremental);
   o.push_back(new Incremental);
   o.back()->version = 1;
+  o.back()->stamp = utime_t(123,345);
   o.push_back(new Incremental);
   o.back()->version = 2;
   o.back()->pg_stat_updates[pg_t(1,2,3)] = pg_stat_t();
@@ -357,7 +362,7 @@ void PGMap::encode(bufferlist &bl, uint64_t features) const
     return;
   }
 
-  ENCODE_START(4, 4, bl);
+  ENCODE_START(5, 4, bl);
   ::encode(version, bl);
   ::encode(pg_stat, bl);
   ::encode(osd_stat, bl);
@@ -365,12 +370,13 @@ void PGMap::encode(bufferlist &bl, uint64_t features) const
   ::encode(last_pg_scan, bl);
   ::encode(full_ratio, bl);
   ::encode(nearfull_ratio, bl);
+  ::encode(stamp, bl);
   ENCODE_FINISH(bl);
 }
 
 void PGMap::decode(bufferlist::iterator &bl)
 {
-  DECODE_START_LEGACY_COMPAT_LEN(4, 4, 4, bl);
+  DECODE_START_LEGACY_COMPAT_LEN(5, 4, 4, bl);
   ::decode(version, bl);
   if (struct_v < 3) {
     pg_stat.clear();
@@ -392,6 +398,8 @@ void PGMap::decode(bufferlist::iterator &bl)
     ::decode(full_ratio, bl);
     ::decode(nearfull_ratio, bl);
   }
+  if (struct_v >= 5)
+    ::decode(stamp, bl);
   DECODE_FINISH(bl);
 
   calc_stats();
@@ -408,6 +416,7 @@ void PGMap::dump(Formatter *f) const
 void PGMap::dump_basic(Formatter *f) const
 {
   f->dump_unsigned("version", version);
+  f->dump_stream("stamp") << stamp;
   f->dump_unsigned("last_osdmap_epoch", last_osdmap_epoch);
   f->dump_unsigned("last_pg_scan", last_pg_scan);
   f->dump_float("full_ratio", full_ratio);
@@ -495,6 +504,7 @@ void PGMap::dump_pg_stats_plain(ostream& ss,
 void PGMap::dump(ostream& ss) const
 {
   ss << "version " << version << std::endl;
+  ss << "stamp " << stamp << std::endl;
   ss << "last_osdmap_epoch " << last_osdmap_epoch << std::endl;
   ss << "last_pg_scan " << last_pg_scan << std::endl;
   ss << "full_ratio " << full_ratio << std::endl;
index 5748101125bc5ad88360ba474fcbf275f3df042d..86ef8d69b5012888e5a9f56ef03eff68b16aeda8 100644 (file)
@@ -52,6 +52,7 @@ public:
     set<pg_t> pg_remove;
     float full_ratio;
     float nearfull_ratio;
+    utime_t stamp;
 
     void encode(bufferlist &bl, uint64_t features=-1) const;
     void decode(bufferlist::iterator &bl);
@@ -70,6 +71,8 @@ public:
   pool_stat_t pg_sum;
   osd_stat_t osd_sum;
 
+  utime_t stamp;
+
   set<pg_t> creating_pgs;   // lru: front = new additions, back = recently pinged
   map<int,set<pg_t> > creating_pgs_by_osd;
 
index 5ca4bdeec446090931a7952d65dbea7aa1b2327a..aaeb7bfeeafd84fd1a2e9fccdcec186a2afbb4ba 100644 (file)
@@ -258,6 +258,7 @@ void PGMonitor::encode_pending(bufferlist &bl)
 {
   dout(10) << "encode_pending v " << pending_inc.version << dendl;
   assert(paxos->get_version() + 1 == pending_inc.version);
+  pending_inc.stamp = ceph_clock_now(g_ceph_context);
   pending_inc.encode(bl, mon->get_quorum_features());
 }