From: Sage Weil Date: Wed, 10 Jul 2019 21:16:46 +0000 (-0500) Subject: osd/osd_types: osd_stat_t: include num_per_pool_osds member X-Git-Tag: v15.1.0~2214^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6a0dc2bd35448fcfe3dc67fd6fa0b3e6dbce622b;p=ceph.git osd/osd_types: osd_stat_t: include num_per_pool_osds member Count OSDs that are reporting per-pool stats. Signed-off-by: Sage Weil --- diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index 893c66544ccc..fd800bd63078 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -396,6 +396,8 @@ void osd_stat_t::dump(Formatter *f) const f->dump_unsigned("up_from", up_from); f->dump_unsigned("seq", seq); f->dump_unsigned("num_pgs", num_pgs); + f->dump_unsigned("num_osds", num_osds); + f->dump_unsigned("num_per_pool_osds", num_per_pool_osds); /// dump legacy stats fields to ensure backward compatibility. f->dump_unsigned("kb", statfs.kb()); @@ -429,7 +431,7 @@ void osd_stat_t::dump(Formatter *f) const void osd_stat_t::encode(ceph::buffer::list &bl, uint64_t features) const { - ENCODE_START(11, 2, bl); + ENCODE_START(12, 2, bl); //////// for compatibility //////// int64_t kb = statfs.kb(); @@ -461,6 +463,8 @@ void osd_stat_t::encode(ceph::buffer::list &bl, uint64_t features) const /////////////////////////////////// encode(os_alerts, bl); encode(num_shards_repaired, bl); + encode(num_osds, bl); + encode(num_per_pool_osds, bl); ENCODE_FINISH(bl); } @@ -468,7 +472,7 @@ void osd_stat_t::decode(ceph::buffer::list::const_iterator &bl) { int64_t kb, kb_used,kb_avail; int64_t kb_used_data, kb_used_omap, kb_used_meta; - DECODE_START_LEGACY_COMPAT_LEN(11, 2, 2, bl); + DECODE_START_LEGACY_COMPAT_LEN(12, 2, 2, bl); decode(kb, bl); decode(kb_used, bl); decode(kb_avail, bl); @@ -528,6 +532,13 @@ void osd_stat_t::decode(ceph::buffer::list::const_iterator &bl) } else { num_shards_repaired = 0; } + if (struct_v >= 12) { + decode(num_osds, bl); + decode(num_per_pool_osds, bl); + } else { + num_osds = 0; + num_per_pool_osds = 0; + } DECODE_FINISH(bl); } diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index 326f270ec5fa..e8205b30ca08 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -2365,6 +2365,9 @@ struct osd_stat_t { uint32_t num_pgs = 0; + uint32_t num_osds = 0; + uint32_t num_per_pool_osds = 0; + osd_stat_t() : snap_trim_queue_len(0), num_snap_trimming(0), num_shards_repaired(0) {} @@ -2376,6 +2379,8 @@ struct osd_stat_t { op_queue_age_hist.add(o.op_queue_age_hist); os_perf_stat.add(o.os_perf_stat); num_pgs += o.num_pgs; + num_osds += o.num_osds; + num_per_pool_osds += o.num_per_pool_osds; for (const auto& a : o.os_alerts) { auto& target = os_alerts[a.first]; for (auto& i : a.second) { @@ -2391,6 +2396,8 @@ struct osd_stat_t { op_queue_age_hist.sub(o.op_queue_age_hist); os_perf_stat.sub(o.os_perf_stat); num_pgs -= o.num_pgs; + num_osds -= o.num_osds; + num_per_pool_osds -= o.num_per_pool_osds; for (const auto& a : o.os_alerts) { auto& target = os_alerts[a.first]; for (auto& i : a.second) { @@ -2416,7 +2423,9 @@ inline bool operator==(const osd_stat_t& l, const osd_stat_t& r) { l.hb_peers == r.hb_peers && l.op_queue_age_hist == r.op_queue_age_hist && l.os_perf_stat == r.os_perf_stat && - l.num_pgs == r.num_pgs; + l.num_pgs == r.num_pgs && + l.num_osds == r.num_osds && + l.num_per_pool_osds == r.num_per_pool_osds; } inline bool operator!=(const osd_stat_t& l, const osd_stat_t& r) { return !(l == r);