From: Sage Weil Date: Fri, 14 Jul 2017 17:09:34 +0000 (-0400) Subject: osd/OSDMap: fix CHOOSE_ARGS feature detection in get_features() X-Git-Tag: v12.1.2~150^2~38 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ecf79d566e8e737ab237f9d90bcb502f7592e2f1;p=ceph.git osd/OSDMap: fix CHOOSE_ARGS feature detection in get_features() We need to include the mask in the CEPH_FEATURES_CRUSH value, and | in the FEATUREMASK later, because this is a second-generation feature bit usage. This fixes get_min_compat_client(), which was returning 'jewel' when incompat choose_args were in use instead of 'luminous'. Now it is correct. Signed-off-by: Sage Weil --- diff --git a/src/include/ceph_features.h b/src/include/ceph_features.h index 908d65ddc7f9..19fab5f303a5 100755 --- a/src/include/ceph_features.h +++ b/src/include/ceph_features.h @@ -244,7 +244,7 @@ DEFINE_CEPH_FEATURE_DEPRECATED(63, 1, RESERVED_BROKEN, LUMINOUS) // client-facin CEPH_FEATURE_CRUSH_TUNABLES5 | \ CEPH_FEATURE_CRUSH_V2 | \ CEPH_FEATURE_CRUSH_V4 | \ - CEPH_FEATURE_CRUSH_CHOOSE_ARGS) + CEPH_FEATUREMASK_CRUSH_CHOOSE_ARGS) /* * make sure we don't try to use the reserved features diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index a93c3d9533d8..7d2939e100a5 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -1312,8 +1312,9 @@ uint64_t OSDMap::get_features(int entity_type, uint64_t *pmask) const features |= CEPH_FEATURE_CRUSH_V4; if (crush->has_nondefault_tunables5()) features |= CEPH_FEATURE_CRUSH_TUNABLES5; - if (crush->has_incompat_choose_args()) - features |= CEPH_FEATURE_CRUSH_CHOOSE_ARGS; + if (crush->has_incompat_choose_args()) { + features |= CEPH_FEATUREMASK_CRUSH_CHOOSE_ARGS; + } mask |= CEPH_FEATURES_CRUSH; if (!pg_upmap.empty() || !pg_upmap_items.empty())