From ab558bbf2956157cbde59c155a5180a62ae73d07 Mon Sep 17 00:00:00 2001 From: Ilya Dryomov Date: Mon, 6 Feb 2017 12:51:05 +0100 Subject: [PATCH] osd/OSDMap: require OSD features only of OSDs Fix up commit 1a5cc32f0a3b ("osd/OSDMap: reflect REQUIRE_*_OSDS flag in required features") -- require_*_osds shouldn't affect older clients. Fixes: http://tracker.ceph.com/issues/18831 Signed-off-by: Ilya Dryomov --- src/osd/OSDMap.cc | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index 8fd5332861013..e7040b89d3bd5 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -1094,18 +1094,20 @@ uint64_t OSDMap::get_features(int entity_type, uint64_t *pmask) const } mask |= CEPH_FEATURE_OSD_PRIMARY_AFFINITY; - const uint64_t jewel_features = CEPH_FEATURE_SERVER_JEWEL; - if (test_flag(CEPH_OSDMAP_REQUIRE_JEWEL)) { - features |= jewel_features; - } - mask |= jewel_features; + if (entity_type == CEPH_ENTITY_TYPE_OSD) { + const uint64_t jewel_features = CEPH_FEATURE_SERVER_JEWEL; + if (test_flag(CEPH_OSDMAP_REQUIRE_JEWEL)) { + features |= jewel_features; + } + mask |= jewel_features; - const uint64_t kraken_features = CEPH_FEATURE_SERVER_KRAKEN - | CEPH_FEATURE_MSG_ADDR2; - if (test_flag(CEPH_OSDMAP_REQUIRE_KRAKEN)) { - features |= kraken_features; + const uint64_t kraken_features = CEPH_FEATURE_SERVER_KRAKEN + | CEPH_FEATURE_MSG_ADDR2; + if (test_flag(CEPH_OSDMAP_REQUIRE_KRAKEN)) { + features |= kraken_features; + } + mask |= kraken_features; } - mask |= kraken_features; if (pmask) *pmask = mask; -- 2.39.5