From: Sage Weil Date: Tue, 23 Jul 2019 22:38:14 +0000 (-0500) Subject: osd/osd_types: count per-pool omap capable OSDs X-Git-Tag: v15.1.0~1915^2~16 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=aa56c41ae86a4b20249a49e33e5bf2fd78197e1d;p=ceph.git osd/osd_types: count per-pool omap capable OSDs Signed-off-by: Sage Weil --- diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index 12f95a0b6283..7aa23f15fa0c 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -398,6 +398,7 @@ void osd_stat_t::dump(Formatter *f) const 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); + f->dump_unsigned("num_per_pool_omap_osds", num_per_pool_omap_osds); /// dump legacy stats fields to ensure backward compatibility. f->dump_unsigned("kb", statfs.kb()); @@ -431,7 +432,7 @@ void osd_stat_t::dump(Formatter *f) const void osd_stat_t::encode(ceph::buffer::list &bl, uint64_t features) const { - ENCODE_START(12, 2, bl); + ENCODE_START(13, 2, bl); //////// for compatibility //////// int64_t kb = statfs.kb(); @@ -465,6 +466,7 @@ void osd_stat_t::encode(ceph::buffer::list &bl, uint64_t features) const encode(num_shards_repaired, bl); encode(num_osds, bl); encode(num_per_pool_osds, bl); + encode(num_per_pool_omap_osds, bl); ENCODE_FINISH(bl); } @@ -472,7 +474,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(12, 2, 2, bl); + DECODE_START_LEGACY_COMPAT_LEN(13, 2, 2, bl); decode(kb, bl); decode(kb_used, bl); decode(kb_avail, bl); @@ -539,6 +541,11 @@ void osd_stat_t::decode(ceph::buffer::list::const_iterator &bl) num_osds = 0; num_per_pool_osds = 0; } + if (struct_v >= 13) { + decode(num_per_pool_omap_osds, bl); + } else { + num_per_pool_omap_osds = 0; + } DECODE_FINISH(bl); } diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index a8662ac5040d..4d6242858dfe 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -2367,6 +2367,7 @@ struct osd_stat_t { uint32_t num_osds = 0; uint32_t num_per_pool_osds = 0; + uint32_t num_per_pool_omap_osds = 0; osd_stat_t() : snap_trim_queue_len(0), num_snap_trimming(0), num_shards_repaired(0) {} @@ -2381,6 +2382,7 @@ struct osd_stat_t { num_pgs += o.num_pgs; num_osds += o.num_osds; num_per_pool_osds += o.num_per_pool_osds; + num_per_pool_omap_osds += o.num_per_pool_omap_osds; for (const auto& a : o.os_alerts) { auto& target = os_alerts[a.first]; for (auto& i : a.second) { @@ -2398,6 +2400,7 @@ struct osd_stat_t { num_pgs -= o.num_pgs; num_osds -= o.num_osds; num_per_pool_osds -= o.num_per_pool_osds; + num_per_pool_omap_osds -= o.num_per_pool_omap_osds; for (const auto& a : o.os_alerts) { auto& target = os_alerts[a.first]; for (auto& i : a.second) { @@ -2425,7 +2428,8 @@ inline bool operator==(const osd_stat_t& l, const osd_stat_t& r) { l.os_perf_stat == r.os_perf_stat && l.num_pgs == r.num_pgs && l.num_osds == r.num_osds && - l.num_per_pool_osds == r.num_per_pool_osds; + l.num_per_pool_osds == r.num_per_pool_osds && + l.num_per_pool_omap_osds == r.num_per_pool_omap_osds; } inline bool operator!=(const osd_stat_t& l, const osd_stat_t& r) { return !(l == r);