#define CEPH_FEATURE_OSDREPLYMUX (1<<12)
#define CEPH_FEATURE_OSDENC (1<<13)
#define CEPH_FEATURE_OMAP (1<<14)
+#define CEPH_FEATURE_MONENC (1<<15)
/*
* Features supported. Should be everything above.
CEPH_FEATURE_PGPOOL3 | \
CEPH_FEATURE_OSDREPLYMUX | \
CEPH_FEATURE_OSDENC | \
- CEPH_FEATURE_OMAP)
+ CEPH_FEATURE_OMAP | \
+ CEPH_FEATURE_MONENC)
#endif
return;
}
- __u16 v = 2;
- ::encode(v, blist);
+ if ((features & CEPH_FEATURE_MONENC) == 0) {
+ __u16 v = 2;
+ ::encode(v, blist);
+ ::encode_raw(fsid, blist);
+ ::encode(epoch, blist);
+ ::encode(mon_addr, blist);
+ ::encode(last_changed, blist);
+ ::encode(created, blist);
+ }
+
+ ENCODE_START(3, 3, blist);
::encode_raw(fsid, blist);
::encode(epoch, blist);
::encode(mon_addr, blist);
::encode(last_changed, blist);
::encode(created, blist);
+ ENCODE_FINISH(blist);
}
void MonMap::decode(bufferlist::iterator &p)
{
- __u16 v;
- ::decode(v, p);
+ DECODE_START_LEGACY_COMPAT_LEN(3, 3, 3, p);
::decode_raw(fsid, p);
::decode(epoch, p);
- if (v == 1) {
+ if (struct_v == 1) {
vector<entity_inst_t> mon_inst;
::decode(mon_inst, p);
for (unsigned i = 0; i < mon_inst.size(); i++) {
string name = n;
mon_addr[name] = mon_inst[i].addr;
}
- } else
+ } else {
::decode(mon_addr, p);
+ }
::decode(last_changed, p);
::decode(created, p);
+ DECODE_FINISH(p);
calc_ranks();
}