From cadd94cb3a874027359564febb10329e995acf34 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 24 Mar 2017 13:59:34 -0400 Subject: [PATCH] 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 --- src/crush/CrushWrapper.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/crush/CrushWrapper.cc b/src/crush/CrushWrapper.cc index 6f3b306ad5426..dba2e31b0eb0b 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) -- 2.39.5