]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
doc, mon: update for reef ondisk features
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Wed, 3 Aug 2022 15:50:08 +0000 (15:50 +0000)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 20 Sep 2022 14:26:59 +0000 (14:26 +0000)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
doc/dev/release-checklists.rst
src/mon/Monitor.cc
src/mon/Monitor.h

index 3f2723b63dd1baafcebe620159df8995da10a655..2ec9ac75abc3e7229d314b5108775a28a83e153e 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 0846fa0a8f00bd771ebccf1496b7149970c2eea4..0001f9d5af160d87b7f95df592411e9ef768cdc5 100644 (file)
@@ -534,6 +534,7 @@ CompatSet Monitor::get_supported_features()
   compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_OCTOPUS);
   compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_PACIFIC);
   compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_QUINCY);
+  compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_REEF);
   return compat;
 }
 
@@ -2493,6 +2494,13 @@ void Monitor::apply_monmap_to_compatset_features()
     ceph_assert(HAVE_FEATURE(quorum_con_features, SERVER_QUINCY));
     new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_QUINCY);
   }
+  if (monmap_features.contains_all(ceph::features::mon::FEATURE_REEF)) {
+    ceph_assert(ceph::features::mon::get_persistent().contains_all(
+           ceph::features::mon::FEATURE_REEF));
+    // this feature should only ever be set if the quorum supports it.
+    ceph_assert(HAVE_FEATURE(quorum_con_features, SERVER_REEF));
+    new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_REEF);
+  }
 
   dout(5) << __func__ << dendl;
   _apply_compatset_features(new_features);
@@ -2528,6 +2536,9 @@ void Monitor::calc_quorum_requirements()
   if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_QUINCY)) {
     required_features |= CEPH_FEATUREMASK_SERVER_QUINCY;
   }
+  if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_REEF)) {
+    required_features |= CEPH_FEATUREMASK_SERVER_REEF;
+  }
 
   // monmap
   if (monmap->get_required_features().contains_all(
index 575fef0a9c886059241b9fca30725a075a2d4445..60fa164a09dbb53962703d37c73bf286d79e7e59 100644 (file)
@@ -1115,6 +1115,7 @@ public:
 #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(14, "quincy ondisk layout")
+#define CEPH_MON_FEATURE_INCOMPAT_REEF CompatSet::Feature(15, "reef ondisk layout")
 // make sure you add your feature to Monitor::get_supported_features