In particular, this is the encoding that is used in precise.
Fixes: #3212
Signed-off-by: Sage Weil <sage@inktank.com>
// 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);
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();
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);
}
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)
/**
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)