diff options
author | Sage Weil <sage@inktank.com> | 2013-02-23 16:36:36 -0800 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-02-23 16:36:52 -0800 |
commit | 0cd215ee5b4768012041006377e10eeff53de7b0 (patch) | |
tree | e57300bf0568a2491e2cf88249b56a442a691337 | |
parent | c07e8ea7ddf2baa3c37c2f1c3a992472dc7577be (diff) | |
download | ceph-0cd215ee5b4768012041006377e10eeff53de7b0.tar.gz |
mds: reencode MDSMap in MMDSMap if MDSENC feature is not present
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>
-rw-r--r-- | src/messages/MMDSMap.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/messages/MMDSMap.h b/src/messages/MMDSMap.h index 42bb98f54e1..66566d01d31 100644 --- a/src/messages/MMDSMap.h +++ b/src/messages/MMDSMap.h @@ -82,7 +82,8 @@ public: 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); |