]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: OSDMap: add 'features' bit mask field to osd_xinfo_t
authorJoao Eduardo Luis <joao.luis@inktank.com>
Thu, 12 Dec 2013 17:09:14 +0000 (17:09 +0000)
committerJoao Eduardo Luis <joao.luis@inktank.com>
Thu, 19 Dec 2013 02:14:57 +0000 (02:14 +0000)
And make sure we dump it on osd_xinfo_t::dump().

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
src/osd/OSDMap.cc
src/osd/OSDMap.h

index cbea920314c10ace91d3ac1f5820080ccb3c92ec..ec255dae78739dc4d3ebb08396b66d1c92465a70 100644 (file)
@@ -90,15 +90,20 @@ void osd_xinfo_t::dump(Formatter *f) const
   f->dump_stream("down_stamp") << down_stamp;
   f->dump_float("laggy_probability", laggy_probability);
   f->dump_int("laggy_interval", laggy_interval);
+  f->open_array_section("features");
+  if (features & CEPH_FEATURE_OSD_ERASURE_CODES)
+    f->dump_string("flag", "erasure-codes");
+  f->close_section();
 }
 
 void osd_xinfo_t::encode(bufferlist& bl) const
 {
-  ENCODE_START(1, 1, bl);
+  ENCODE_START(2, 1, bl);
   ::encode(down_stamp, bl);
   __u32 lp = laggy_probability * 0xfffffffful;
   ::encode(lp, bl);
   ::encode(laggy_interval, bl);
+  ::encode(features, bl);
   ENCODE_FINISH(bl);
 }
 
@@ -110,6 +115,10 @@ void osd_xinfo_t::decode(bufferlist::iterator& bl)
   ::decode(lp, bl);
   laggy_probability = (float)lp / (float)0xffffffff;
   ::decode(laggy_interval, bl);
+  if (struct_v >= 2)
+    ::decode(features, bl);
+  else
+    features = 0;
   DECODE_FINISH(bl);
 }
 
index bd0b92ccecb36393ff6fda2ea7ec89443a6cdd3e..a04507cecd42aca439b72f3c66ca7caedeee2dca 100644 (file)
@@ -86,13 +86,14 @@ WRITE_CLASS_ENCODER(osd_info_t)
 
 ostream& operator<<(ostream& out, const osd_info_t& info);
 
-
 struct osd_xinfo_t {
   utime_t down_stamp;      ///< timestamp when we were last marked down
   float laggy_probability; ///< encoded as __u32: 0 = definitely not laggy, 0xffffffff definitely laggy
   __u32 laggy_interval;    ///< average interval between being marked laggy and recovering
+  uint64_t features;       ///< features supported by this osd we should know about
 
-  osd_xinfo_t() : laggy_probability(0), laggy_interval(0) {}
+  osd_xinfo_t() : laggy_probability(0), laggy_interval(0),
+                  features(0) {}
 
   void dump(Formatter *f) const;
   void encode(bufferlist& bl) const;