From: Samuel Just Date: Mon, 1 Apr 2013 22:42:34 +0000 (-0700) Subject: osd_types: add last_became_active to pg_stats X-Git-Tag: v0.61~105^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a40772bedce37ad2285d02a59ff2f46010af4d65;p=ceph.git osd_types: add last_became_active to pg_stats Signed-off-by: Samuel Just --- diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 8cab7c774008..90fe7728d63b 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -2322,6 +2322,9 @@ void PG::update_stats() if (info.stats.state != state) { info.stats.state = state; info.stats.last_change = now; + if ((state & PG_STATE_ACTIVE) && + !(info.stats.state & PG_STATE_ACTIVE)) + info.stats.last_became_active = now; } if (info.stats.state & PG_STATE_CLEAN) info.stats.last_clean = now; diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index 83c688707650..89ca468710b2 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -1090,6 +1090,7 @@ void pg_stat_t::dump(Formatter *f) const f->dump_stream("last_change") << last_change; f->dump_stream("last_active") << last_active; 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_unsigned("mapping_epoch", mapping_epoch); f->dump_stream("log_start") << log_start; @@ -1119,7 +1120,7 @@ void pg_stat_t::dump(Formatter *f) const void pg_stat_t::encode(bufferlist &bl) const { - ENCODE_START(12, 8, bl); + ENCODE_START(13, 8, bl); ::encode(version, bl); ::encode(reported, bl); ::encode(state, bl); @@ -1146,12 +1147,13 @@ void pg_stat_t::encode(bufferlist &bl) const ::encode(last_deep_scrub_stamp, bl); ::encode(stats_invalid, bl); ::encode(last_clean_scrub_stamp, bl); + ::encode(last_became_active, bl); ENCODE_FINISH(bl); } void pg_stat_t::decode(bufferlist::iterator &bl) { - DECODE_START_LEGACY_COMPAT_LEN(12, 8, 8, bl); + DECODE_START_LEGACY_COMPAT_LEN(13, 8, 8, bl); ::decode(version, bl); ::decode(reported, bl); ::decode(state, bl); @@ -1225,6 +1227,11 @@ void pg_stat_t::decode(bufferlist::iterator &bl) } else { last_clean_scrub_stamp = utime_t(); } + if (struct_v >= 13) { + ::decode(last_became_active, bl); + } else { + last_became_active = last_active; + } DECODE_FINISH(bl); } diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index 12a410ef2d22..fbc467b7cf6b 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -931,6 +931,8 @@ struct pg_stat_t { vector up, acting; epoch_t mapping_epoch; + utime_t last_became_active; + pg_stat_t() : state(0), created(0), last_epoch_clean(0),