From: Sage Weil Date: Thu, 30 Jan 2014 03:47:21 +0000 (-0800) Subject: osd/OSDMap: add primary_affinity feature bit X-Git-Tag: v0.78~173^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f825624ff09111fe7f2d216ac60d8fa85b5ff63e;p=ceph.git osd/OSDMap: add primary_affinity feature bit Indicate that we support it. Indicate when an OSDMap requires it. Signed-off-by: Sage Weil --- diff --git a/src/include/ceph_features.h b/src/include/ceph_features.h index c81c60092a04..f2b8a851a45d 100644 --- a/src/include/ceph_features.h +++ b/src/include/ceph_features.h @@ -49,6 +49,7 @@ #define CEPH_FEATURE_OSDMAP_ENC (1ULL<<39) #define CEPH_FEATURE_MDS_INLINE_DATA (1ULL<<40) #define CEPH_FEATURE_CRUSH_TUNABLES3 (1ULL<<41) +#define CEPH_FEATURE_OSD_PRIMARY_AFFINITY (1ULL<<41) /* overlap w/ tunables3 */ /* * The introduction of CEPH_FEATURE_OSD_SNAPMAPPER caused the feature @@ -118,6 +119,7 @@ static inline unsigned long long ceph_sanitize_features(unsigned long long f) { CEPH_FEATURE_OSDMAP_ENC | \ CEPH_FEATURE_MDS_INLINE_DATA | \ CEPH_FEATURE_CRUSH_TUNABLES3 | \ + CEPH_FEATURE_OSD_PRIMARY_AFFINITY | \ 0ULL) #define CEPH_FEATURES_SUPPORTED_DEFAULT CEPH_FEATURES_ALL diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index d101728bbe3b..fd73409e118a 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -959,6 +959,16 @@ uint64_t OSDMap::get_features(uint64_t *pmask) const mask |= CEPH_FEATURE_OSDHASHPSPOOL | CEPH_FEATURE_OSD_CACHEPOOL | CEPH_FEATURE_OSD_ERASURE_CODES; + if (osd_primary_affinity) { + for (int i = 0; i < max_osd; ++i) { + if ((*osd_primary_affinity)[i] != CEPH_OSD_DEFAULT_PRIMARY_AFFINITY) { + features |= CEPH_FEATURE_OSD_PRIMARY_AFFINITY; + break; + } + } + } + mask |= CEPH_FEATURE_OSD_PRIMARY_AFFINITY; + if (pmask) *pmask = mask; return features;