From 1907066feecc2ada11924af94cc5631d70c0cfca Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 30 Jun 2014 17:17:51 -0700 Subject: [PATCH] osd/osd_types: add last_undegraded, last_undersized to pg_stat_t Keep track of the last time the PG was known to not be degraded or undersized. Signed-off-by: Sage Weil --- src/osd/osd_types.cc | 17 +++++++++++++++-- src/osd/osd_types.h | 2 ++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index d3fac18462bbb..27f6e26c00ecc 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -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& 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; diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index 9335bbbfba326..4368998a1eddc 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -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 -- 2.39.5