From 345d3b655a62f221e06187b67d53aeb5f7239062 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 12 Oct 2017 16:14:52 -0500 Subject: [PATCH] osd/osd_types: add purged_snaps to pg_stat_t Signed-off-by: Sage Weil --- src/osd/osd_types.cc | 21 ++++++++++++++++++--- src/osd/osd_types.h | 2 ++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index 8585f68109810..6cd18c2ef6fa9 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -2315,6 +2315,16 @@ void pg_stat_t::dump(Formatter *f) const f->close_section(); f->dump_int("up_primary", up_primary); f->dump_int("acting_primary", acting_primary); + f->open_array_section("purged_snaps"); + for (interval_set::const_iterator i = purged_snaps.begin(); + i != purged_snaps.end(); + ++i) { + f->open_object_section("interval"); + f->dump_stream("start") << i.get_start(); + f->dump_stream("length") << i.get_len(); + f->close_section(); + } + f->close_section(); } void pg_stat_t::dump_brief(Formatter *f) const @@ -2334,7 +2344,7 @@ void pg_stat_t::dump_brief(Formatter *f) const void pg_stat_t::encode(bufferlist &bl) const { - ENCODE_START(23, 22, bl); + ENCODE_START(24, 22, bl); ::encode(version, bl); ::encode(reported_seq, bl); ::encode(reported_epoch, bl); @@ -2376,6 +2386,7 @@ void pg_stat_t::encode(bufferlist &bl) const ::encode(last_became_peered, bl); ::encode(pin_stats_invalid, bl); ::encode(state, bl); + ::encode(purged_snaps, bl); ENCODE_FINISH(bl); } @@ -2383,7 +2394,7 @@ void pg_stat_t::decode(bufferlist::iterator &bl) { bool tmp; uint32_t old_state; - DECODE_START(23, bl); + DECODE_START(24, bl); ::decode(version, bl); ::decode(reported_seq, bl); ::decode(reported_epoch, bl); @@ -2435,6 +2446,9 @@ void pg_stat_t::decode(bufferlist::iterator &bl) } else { state = old_state; } + if (struct_v >= 24) { + ::decode(purged_snaps, bl); + } DECODE_FINISH(bl); } @@ -2528,7 +2542,8 @@ bool operator==(const pg_stat_t& l, const pg_stat_t& r) l.hitset_bytes_stats_invalid == r.hitset_bytes_stats_invalid && l.up_primary == r.up_primary && l.acting_primary == r.acting_primary && - l.pin_stats_invalid == r.pin_stats_invalid; + l.pin_stats_invalid == r.pin_stats_invalid && + l.purged_snaps == r.purged_snaps; } // -- pool_stat_t -- diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index 16562a3bedafd..0951c29872a6a 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -1946,6 +1946,8 @@ struct pg_stat_t { vector blocked_by; ///< osds on which the pg is blocked + interval_set purged_snaps; ///< recently removed snaps that we've purged + utime_t last_became_active; utime_t last_became_peered; -- 2.39.5