From: Sage Weil Date: Mon, 4 Aug 2014 23:16:25 +0000 (-0700) Subject: osd/osd_types: add blocked_by to pg_stat_t X-Git-Tag: v0.85~27^2~13 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=466aba42adaa2e928622913f18167fc0214e32ae;p=ceph.git osd/osd_types: add blocked_by to pg_stat_t Signed-off-by: Sage Weil --- diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index 9cde9dcfe89..a7ebda474a2 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -1632,6 +1632,11 @@ void pg_stat_t::dump(Formatter *f) const for (vector::const_iterator p = acting.begin(); p != acting.end(); ++p) f->dump_int("osd", *p); f->close_section(); + f->open_array_section("blocked_by"); + for (vector::const_iterator p = blocked_by.begin(); + p != blocked_by.end(); ++p) + f->dump_int("osd", *p); + f->close_section(); f->dump_int("up_primary", up_primary); f->dump_int("acting_primary", acting_primary); } @@ -1653,7 +1658,7 @@ void pg_stat_t::dump_brief(Formatter *f) const void pg_stat_t::encode(bufferlist &bl) const { - ENCODE_START(17, 8, bl); + ENCODE_START(18, 8, bl); ::encode(version, bl); ::encode(reported_seq, bl); ::encode(reported_epoch, bl); @@ -1687,12 +1692,13 @@ void pg_stat_t::encode(bufferlist &bl) const ::encode(acting_primary, bl); ::encode(omap_stats_invalid, bl); ::encode(hitset_stats_invalid, bl); + ::encode(blocked_by, bl); ENCODE_FINISH(bl); } void pg_stat_t::decode(bufferlist::iterator &bl) { - DECODE_START_LEGACY_COMPAT_LEN(17, 8, 8, bl); + DECODE_START_LEGACY_COMPAT_LEN(18, 8, 8, bl); ::decode(version, bl); ::decode(reported_seq, bl); ::decode(reported_epoch, bl); @@ -1800,6 +1806,11 @@ void pg_stat_t::decode(bufferlist::iterator &bl) // encoder may not have supported num_objects_hit_set_archive accounting. hitset_stats_invalid = true; } + if (struct_v >= 18) { + ::decode(blocked_by, bl); + } else { + blocked_by.clear(); + } DECODE_FINISH(bl); } @@ -1844,6 +1855,8 @@ void pg_stat_t::generate_test_instances(list& o) a.up_primary = 124; a.acting.push_back(124); a.acting_primary = 124; + a.blocked_by.push_back(155); + a.blocked_by.push_back(156); o.push_back(new pg_stat_t(a)); } diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index abbfe2c2675..30406853762 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -1374,6 +1374,8 @@ struct pg_stat_t { vector up, acting; epoch_t mapping_epoch; + vector blocked_by; ///< osds on which the pg is blocked + utime_t last_became_active; /// true if num_objects_dirty is not accurate (because it was not