]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: update for quincy ondisk features
authorSage Weil <sage@newdream.net>
Wed, 27 Jan 2021 20:32:31 +0000 (14:32 -0600)
committerSage Weil <sage@newdream.net>
Thu, 28 Jan 2021 19:29:28 +0000 (13:29 -0600)
Signed-off-by: Sage Weil <sage@newdream.net>
doc/dev/release-checklists.rst
src/mon/Monitor.cc
src/mon/Monitor.h

index fd577c9d1f9285581f334e75703295ac6895e2b0..0793469a211d35c83c727538697769177b8960a7 100644 (file)
@@ -55,10 +55,10 @@ Feature bits
 Compatsets
 ----------
 
-- [ ] mon/Monitor.h (`CEPH_MON_FEATURE_INCOMPAT_X`)
-- [ ] mon/Monitor.cc (include in `get_supported_features()`)
-- [ ] mon/Monitor.cc (`apply_monmap_to_compatset_features()`)
-- [ ] mon/Monitor.cc (`calc_quorum_requirements()`)
+- [x] mon/Monitor.h (`CEPH_MON_FEATURE_INCOMPAT_X`)
+- [x] mon/Monitor.cc (include in `get_supported_features()`)
+- [x] mon/Monitor.cc (`apply_monmap_to_compatset_features()`)
+- [x] mon/Monitor.cc (`calc_quorum_requirements()`)
 
 Mon
 ---
index 256ad58a6de197b7fedbe4fccadd2c63bf54eb6c..c58e6e528a4376e8aede699a2e08776524748bda 100644 (file)
@@ -519,6 +519,7 @@ CompatSet Monitor::get_supported_features()
   compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_NAUTILUS);
   compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_OCTOPUS);
   compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_PACIFIC);
+  compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_QUINCY);
   return compat;
 }
 
@@ -2476,6 +2477,13 @@ void Monitor::apply_monmap_to_compatset_features()
     ceph_assert(HAVE_FEATURE(quorum_con_features, SERVER_PACIFIC));
     new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_PACIFIC);
   }
+  if (monmap_features.contains_all(ceph::features::mon::FEATURE_QUINCY)) {
+    ceph_assert(ceph::features::mon::get_persistent().contains_all(
+           ceph::features::mon::FEATURE_QUINCY));
+    // this feature should only ever be set if the quorum supports it.
+    ceph_assert(HAVE_FEATURE(quorum_con_features, SERVER_QUINCY));
+    new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_QUINCY);
+  }
 
   dout(5) << __func__ << dendl;
   _apply_compatset_features(new_features);
@@ -2508,6 +2516,9 @@ void Monitor::calc_quorum_requirements()
   if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_PACIFIC)) {
     required_features |= CEPH_FEATUREMASK_SERVER_PACIFIC;
   }
+  if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_QUINCY)) {
+    required_features |= CEPH_FEATUREMASK_SERVER_QUINCY;
+  }
 
   // monmap
   if (monmap->get_required_features().contains_all(
index 95f0259bcb1bbce7b8db90f6b078e2d37253b43f..1b8bd8c7c6dfc2e3fc3a0f20c95c02e603502109 100644 (file)
@@ -1077,6 +1077,7 @@ public:
 #define CEPH_MON_FEATURE_INCOMPAT_NAUTILUS CompatSet::Feature(11, "nautilus ondisk layout")
 #define CEPH_MON_FEATURE_INCOMPAT_OCTOPUS CompatSet::Feature(12, "octopus ondisk layout")
 #define CEPH_MON_FEATURE_INCOMPAT_PACIFIC CompatSet::Feature(13, "pacific ondisk layout")
+#define CEPH_MON_FEATURE_INCOMPAT_QUINCY CompatSet::Feature(13, "quincy ondisk layout")
 // make sure you add your feature to Monitor::get_supported_features