]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/OSDMap: add primary_affinity feature bit
authorSage Weil <sage@inktank.com>
Thu, 30 Jan 2014 03:47:21 +0000 (19:47 -0800)
committerSage Weil <sage@inktank.com>
Sat, 15 Feb 2014 18:50:09 +0000 (10:50 -0800)
Indicate that we support it.  Indicate when an OSDMap requires it.

Signed-off-by: Sage Weil <sage@inktank.com>
src/include/ceph_features.h
src/osd/OSDMap.cc

index c81c60092a0492c7faa14d79cb216e75333b1422..f2b8a851a45d8d5c0e61138dfdf1e781f7edb3a6 100644 (file)
@@ -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
index d101728bbe3bd531acc5060f1359a3b6b9bcabdd..fd73409e118a0f55998ba386ec5c17fee96b2a42 100644 (file)
@@ -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;