]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crush: only encode class info if SERVER_LUMINOUS 14131/head
authorSage Weil <sage@redhat.com>
Fri, 24 Mar 2017 17:59:34 +0000 (13:59 -0400)
committerSage Weil <sage@redhat.com>
Fri, 24 Mar 2017 17:59:34 +0000 (13:59 -0400)
This fixes OSDMap reencode crc mismatches on jewel to
luminous upgrades.

Fixes: http://tracker.ceph.com/issues/19361
Signed-off-by: Sage Weil <sage@redhat.com>
src/crush/CrushWrapper.cc

index 6f3b306ad542689ea63f14a631af5e2f63e2b1c7..dba2e31b0eb0b6c436a8d745f55290a6a123c05e 100644 (file)
@@ -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<int32_t,string>& m, bufferlist::iterator& blp)