]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/osd_types: count per-pool omap capable OSDs
authorSage Weil <sage@redhat.com>
Tue, 23 Jul 2019 22:38:14 +0000 (17:38 -0500)
committerSage Weil <sage@redhat.com>
Tue, 6 Aug 2019 14:24:14 +0000 (09:24 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/osd_types.cc
src/osd/osd_types.h

index 12f95a0b62835b5d5cc6502b0dc16d721c29ec1a..7aa23f15fa0c1885a80625743783ec748fe3a15e 100644 (file)
@@ -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);
 }
 
index a8662ac5040d00905ab1a756bac74cd6670edf4e..4d6242858dfe0585913386df83d9501f49e67390 100644 (file)
@@ -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);