In some cases the MMDSMap message from mon -> client passes from leader ->
peon -> client, and the leader doesn't encode with the correct feature
bits. As with MMOSDMap, we reencode the nested MDSMap based on the
features if relevant bits are not present.
We forgot to include this with the mds encoding changes.
Signed-off-by: Sage Weil <sage@inktank.com>
void encode_payload(uint64_t features) {
::encode(fsid, payload);
::encode(epoch, payload);
- if ((features & CEPH_FEATURE_PGID64) == 0) {
+ if ((features & CEPH_FEATURE_PGID64) == 0 ||
+ (features & CEPH_FEATURE_MDSENC) == 0) {
// reencode for old clients.
MDSMap m;
m.decode(encoded);