From 3c1f7cbc45c4744eea3c821f0343596756e05ab1 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Thu, 24 Sep 2015 18:35:39 -0700 Subject: [PATCH] OSDMap: fill in known encode_features where possible Otherwise, if we get an incremental from hammer (struct_v = 6) we will encode the full map as if it were before CEPH_FEATURE_PGID64, which was actually pre-argonaut. Similarly, if struct_v >= 7, we know it was encoded with CEPH_FEATURE_OSDMAP_ENC. Fixes: #13234 Backport: hammer Signed-off-by: Samuel Just (cherry picked from commit 04679c5451e353c966f6ed00b33fa97be8072a79) --- src/osd/OSDMap.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index a9154d48a297a..173b468b5b0ed 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -590,6 +590,10 @@ void OSDMap::Incremental::decode(bufferlist::iterator& bl) bl.advance(-struct_v_size); decode_classic(bl); encode_features = 0; + if (struct_v >= 6) + encode_features = CEPH_FEATURE_PGID64; + else + encode_features = 0; return; } { @@ -641,7 +645,7 @@ void OSDMap::Incremental::decode(bufferlist::iterator& bl) if (struct_v >= 2) ::decode(encode_features, bl); else - encode_features = 0; + encode_features = CEPH_FEATURE_PGID64 | CEPH_FEATURE_OSDMAP_ENC; DECODE_FINISH(bl); // osd-only data } -- 2.39.5