From: Sage Weil Date: Fri, 24 Mar 2017 17:59:34 +0000 (-0400) Subject: crush: only encode class info if SERVER_LUMINOUS X-Git-Tag: v12.0.2~315^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F14131%2Fhead;p=ceph.git crush: only encode class info if SERVER_LUMINOUS This fixes OSDMap reencode crc mismatches on jewel to luminous upgrades. Fixes: http://tracker.ceph.com/issues/19361 Signed-off-by: Sage Weil --- diff --git a/src/crush/CrushWrapper.cc b/src/crush/CrushWrapper.cc index 6f3b306ad542..dba2e31b0eb0 100644 --- a/src/crush/CrushWrapper.cc +++ b/src/crush/CrushWrapper.cc @@ -1386,10 +1386,12 @@ void CrushWrapper::encode(bufferlist& bl, uint64_t features) const ::encode(crush->chooseleaf_stable, bl); } - // device classes - ::encode(class_map, bl); - ::encode(class_name, bl); - ::encode(class_bucket, bl); + if (HAVE_FEATURE(features, SERVER_LUMINOUS)) { + // device classes + ::encode(class_map, bl); + ::encode(class_name, bl); + ::encode(class_bucket, bl); + } } static void decode_32_or_64_string_map(map& m, bufferlist::iterator& blp)