From c4793abbf80dfeb6ae9e90d96c5055001f13eeee Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Thu, 30 Oct 2014 13:21:01 -0700 Subject: [PATCH] osd_types: add last_peered, last_became_peered Signed-off-by: Samuel Just --- src/osd/PG.cc | 6 ++++++ src/osd/osd_types.cc | 13 ++++++++++++- src/osd/osd_types.h | 2 ++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/osd/PG.cc b/src/osd/PG.cc index d6db60001f8bd..9db685c19dce6 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -2375,6 +2375,9 @@ void PG::publish_stats_to_osd() if ((state & PG_STATE_ACTIVE) && !(info.stats.state & PG_STATE_ACTIVE)) info.stats.last_became_active = now; + if ((state & (PG_STATE_ACTIVE|PG_STATE_PEERED)) && + !(info.stats.state & (PG_STATE_ACTIVE|PG_STATE_PEERED))) + info.stats.last_became_peered = now; } _update_calc_stats(); @@ -2393,10 +2396,13 @@ void PG::publish_stats_to_osd() ++info.stats.reported_seq; info.stats.last_fresh = now; + if (info.stats.state & PG_STATE_CLEAN) info.stats.last_clean = now; if (info.stats.state & PG_STATE_ACTIVE) info.stats.last_active = now; + if (info.stats.state & (PG_STATE_ACTIVE|PG_STATE_PEERED)) + info.stats.last_peered = now; info.stats.last_unstale = now; if ((info.stats.state & PG_STATE_DEGRADED) == 0) info.stats.last_undegraded = now; diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index 1eae98a1b1416..059ecee84d6b9 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -1718,8 +1718,10 @@ void pg_stat_t::dump(Formatter *f) const f->dump_stream("last_fresh") << last_fresh; f->dump_stream("last_change") << last_change; f->dump_stream("last_active") << last_active; + f->dump_stream("last_peered") << last_peered; f->dump_stream("last_clean") << last_clean; f->dump_stream("last_became_active") << last_became_active; + f->dump_stream("last_became_peered") << last_became_peered; f->dump_stream("last_unstale") << last_unstale; f->dump_stream("last_undegraded") << last_undegraded; f->dump_stream("last_fullsized") << last_fullsized; @@ -1773,7 +1775,7 @@ void pg_stat_t::dump_brief(Formatter *f) const void pg_stat_t::encode(bufferlist &bl) const { - ENCODE_START(20, 8, bl); + ENCODE_START(21, 8, bl); ::encode(version, bl); ::encode(reported_seq, bl); ::encode(reported_epoch, bl); @@ -1811,6 +1813,8 @@ void pg_stat_t::encode(bufferlist &bl) const ::encode(last_undegraded, bl); ::encode(last_fullsized, bl); ::encode(hitset_bytes_stats_invalid, bl); + ::encode(last_peered, bl); + ::encode(last_became_peered, bl); ENCODE_FINISH(bl); } @@ -1943,6 +1947,13 @@ void pg_stat_t::decode(bufferlist::iterator &bl) // encoder may not have supported num_bytes_hit_set_archive accounting. hitset_bytes_stats_invalid = true; } + if (struct_v >= 21) { + ::decode(last_peered, bl); + ::decode(last_became_peered, bl); + } else { + last_peered = last_active; + last_became_peered = last_became_active; + } DECODE_FINISH(bl); } diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index b729cd88fa22d..5cb7ed4efb6cc 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -1404,6 +1404,7 @@ struct pg_stat_t { utime_t last_fresh; // last reported utime_t last_change; // new state != previous state utime_t last_active; // state & PG_STATE_ACTIVE + utime_t last_peered; // state & PG_STATE_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 @@ -1435,6 +1436,7 @@ struct pg_stat_t { vector blocked_by; ///< osds on which the pg is blocked utime_t last_became_active; + utime_t last_became_peered; /// true if num_objects_dirty is not accurate (because it was not /// maintained starting from pool creation) -- 2.39.5