]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/osd_types: add last_undegraded, last_undersized to pg_stat_t
authorSage Weil <sage@redhat.com>
Tue, 1 Jul 2014 00:17:51 +0000 (17:17 -0700)
committerSage Weil <sage@redhat.com>
Sat, 16 Aug 2014 20:19:45 +0000 (13:19 -0700)
Keep track of the last time the PG was known to not be degraded or
undersized.

Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/osd_types.cc
src/osd/osd_types.h

index d3fac18462bbb9022e2b88831253894d12be1c4f..27f6e26c00ecc32ce3b43fde951b25f56a641474 100644 (file)
@@ -1631,6 +1631,8 @@ void pg_stat_t::dump(Formatter *f) const
   f->dump_stream("last_clean") << last_clean;
   f->dump_stream("last_became_active") << last_became_active;
   f->dump_stream("last_unstale") << last_unstale;
+  f->dump_stream("last_undegraded") << last_undegraded;
+  f->dump_stream("last_fullsized") << last_fullsized;
   f->dump_unsigned("mapping_epoch", mapping_epoch);
   f->dump_stream("log_start") << log_start;
   f->dump_stream("ondisk_log_start") << ondisk_log_start;
@@ -1681,7 +1683,7 @@ void pg_stat_t::dump_brief(Formatter *f) const
 
 void pg_stat_t::encode(bufferlist &bl) const
 {
-  ENCODE_START(18, 8, bl);
+  ENCODE_START(19, 8, bl);
   ::encode(version, bl);
   ::encode(reported_seq, bl);
   ::encode(reported_epoch, bl);
@@ -1716,12 +1718,14 @@ void pg_stat_t::encode(bufferlist &bl) const
   ::encode(omap_stats_invalid, bl);
   ::encode(hitset_stats_invalid, bl);
   ::encode(blocked_by, bl);
+  ::encode(last_undegraded, bl);
+  ::encode(last_fullsized, bl);
   ENCODE_FINISH(bl);
 }
 
 void pg_stat_t::decode(bufferlist::iterator &bl)
 {
-  DECODE_START_LEGACY_COMPAT_LEN(18, 8, 8, bl);
+  DECODE_START_LEGACY_COMPAT_LEN(19, 8, 8, bl);
   ::decode(version, bl);
   ::decode(reported_seq, bl);
   ::decode(reported_epoch, bl);
@@ -1834,6 +1838,13 @@ void pg_stat_t::decode(bufferlist::iterator &bl)
   } else {
     blocked_by.clear();
   }
+  if (struct_v >= 19) {
+    ::decode(last_undegraded, bl);
+    ::decode(last_fullsized, bl);
+  } else {
+    last_undegraded = utime_t();
+    last_fullsized = utime_t();
+  }
   DECODE_FINISH(bl);
 }
 
@@ -1852,6 +1863,8 @@ void pg_stat_t::generate_test_instances(list<pg_stat_t*>& o)
   a.last_active = utime_t(1002, 3);
   a.last_clean = utime_t(1002, 4);
   a.last_unstale = utime_t(1002, 5);
+  a.last_undegraded = utime_t(1002, 7);
+  a.last_fullsized = utime_t(1002, 8);
   a.log_start = eversion_t(1, 4);
   a.ondisk_log_start = eversion_t(1, 5);
   a.created = 6;
index 9335bbbfba3267408b31ea741530db88d8e75574..4368998a1eddc485fbb704e5d8c3c0451703b155 100644 (file)
@@ -1358,6 +1358,8 @@ struct pg_stat_t {
   utime_t last_active;  // state & PG_STATE_ACTIVE
   utime_t last_clean;   // state & PG_STATE_CLEAN
   utime_t last_unstale; // (state & PG_STATE_STALE) == 0
+  utime_t last_undegraded; // (state & PG_STATE_DEGRADED) == 0
+  utime_t last_fullsized; // (state & PG_STATE_UNDERSIZED) == 0
 
   eversion_t log_start;         // (log_start,version]
   eversion_t ondisk_log_start;  // there may be more on disk