From: Samuel Just Date: Fri, 25 Sep 2015 01:35:39 +0000 (-0700) Subject: OSDMap: fill in known encode_features where possible X-Git-Tag: v9.1.0~46^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F6122%2Fhead;p=ceph.git 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 --- diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index a8f08498b4bc..d308186871de 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 }