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: v14.2.2~3^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=151915bc0de8fe6996e911ec512bc84e4217e9ce;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 (cherry picked from commit 6a0dc2bd35448fcfe3dc67fd6fa0b3e6dbce622b) --- diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index 82d3ef04073..ae3813193b6 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -362,6 +362,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()); @@ -395,7 +397,7 @@ void osd_stat_t::dump(Formatter *f) const void osd_stat_t::encode(bufferlist &bl, uint64_t features) const { - ENCODE_START(11, 2, bl); + ENCODE_START(12, 2, bl); //////// for compatibility //////// int64_t kb = statfs.kb(); @@ -427,6 +429,8 @@ void osd_stat_t::encode(bufferlist &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); } @@ -434,7 +438,7 @@ void osd_stat_t::decode(bufferlist::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); @@ -494,6 +498,13 @@ void osd_stat_t::decode(bufferlist::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 a3a29a8a31d..52da66e9d6e 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -2353,6 +2353,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) {} @@ -2364,6 +2367,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) { @@ -2379,6 +2384,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) { @@ -2404,7 +2411,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);