]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: make pool_stat_t encoding backward compatible with v0.41 and older
authorSage Weil <sage@inktank.com>
Fri, 7 Dec 2012 22:09:14 +0000 (14:09 -0800)
committerSage Weil <sage@inktank.com>
Sat, 8 Dec 2012 17:24:38 +0000 (09:24 -0800)
In particular, this is the encoding that is used in precise.

Fixes: #3212
Signed-off-by: Sage Weil <sage@inktank.com>
src/include/encoding.h
src/messages/MGetPoolStatsReply.h
src/osd/osd_types.cc
src/osd/osd_types.h
src/test/encoding/types.h

index db5d19658cf1efa8213947f7f1e5e872a7b3b2be..eb445e3b070e4ae9e37ec8ba41db9329a060de2a 100644 (file)
@@ -159,7 +159,7 @@ WRITE_INTTYPE_ENCODER(int16_t, le16)
 
 
 // string
-inline void encode(const std::string& s, bufferlist& bl
+inline void encode(const std::string& s, bufferlist& bl, uint64_t features=0)
 {
   __u32 len = s.length();
   encode(len, bl);
index 26f9e13ab7083e48d2df8690cb7ae3a0efcfd6b0..719d5b80e0e5393b194f72ad0e56abf67baa0a1a 100644 (file)
@@ -42,7 +42,7 @@ public:
   void encode_payload(uint64_t features) {
     paxos_encode();
     ::encode(fsid, payload);
-    ::encode(pool_stats, payload);
+    ::encode(pool_stats, payload, features);
   }
   void decode_payload() {
     bufferlist::iterator p = payload.begin();
index 4a1b3fcf2ef1e95c6e19df27ce18fb23ee58bb3a..e8db13e50db78c137d7e8bdc07b6d57dc3d0e7c7 100644 (file)
@@ -1152,8 +1152,17 @@ void pool_stat_t::dump(Formatter *f) const
   f->dump_unsigned("ondisk_log_size", ondisk_log_size);
 }
 
-void pool_stat_t::encode(bufferlist &bl) const
+void pool_stat_t::encode(bufferlist &bl, uint64_t features) const
 {
+  if ((features & CEPH_FEATURE_OSDENC) == 0) {
+    __u8 v = 4;
+    ::encode(v, bl);
+    ::encode(stats, bl);
+    ::encode(log_size, bl);
+    ::encode(ondisk_log_size, bl);
+    return;
+  }
+
   ENCODE_START(5, 5, bl);
   ::encode(stats, bl);
   ::encode(log_size, bl);
index da2b2abf319b18eb15f1fccedc418b2a32f53b0e..c1e5aa265858d3cf26e5ec55df42df8c3e3b4575 100644 (file)
@@ -941,11 +941,11 @@ struct pool_stat_t {
   }
 
   void dump(Formatter *f) const;
-  void encode(bufferlist &bl) const;
+  void encode(bufferlist &bl, uint64_t features) const;
   void decode(bufferlist::iterator &bl);
   static void generate_test_instances(list<pool_stat_t*>& o);
 };
-WRITE_CLASS_ENCODER(pool_stat_t)
+WRITE_CLASS_ENCODER_FEATURES(pool_stat_t)
 
 
 /**
index 2c717cb93377eefdd66d002d6de23461e51f240d..e3b7e30514059d062ebc4df53928b4298c530668 100644 (file)
@@ -41,7 +41,7 @@ TYPE_FEATUREFUL(pg_pool_t)
 TYPE(object_stat_sum_t)
 TYPE(object_stat_collection_t)
 TYPE(pg_stat_t)
-TYPE(pool_stat_t)
+TYPE_FEATUREFUL(pool_stat_t)
 TYPE(pg_history_t)
 TYPE(pg_info_t)
 TYPE(pg_interval_t)