summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-02-23 16:36:36 -0800
committerSage Weil <sage@inktank.com>2013-02-23 16:36:52 -0800
commit0cd215ee5b4768012041006377e10eeff53de7b0 (patch)
treee57300bf0568a2491e2cf88249b56a442a691337
parentc07e8ea7ddf2baa3c37c2f1c3a992472dc7577be (diff)
downloadceph-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.h3
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);