]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: update for squid ondisk features
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Mon, 21 Aug 2023 14:33:58 +0000 (14:33 +0000)
committerRadosław Zarzyński <rzarzyns@redhat.com>
Mon, 4 Dec 2023 15:27:51 +0000 (16:27 +0100)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
doc/dev/release-checklists.rst
src/mon/Monitor.cc
src/mon/Monitor.h

index dd92c551437ea0ada462eb5c6354ce0699a4594a..01d1d0589fea0031ac8da7a0cefcca4680d8ce90 100644 (file)
@@ -72,10 +72,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()`)
 - [ ] test/cli/monmaptool/feature-set-unset-list.t (`supported`, `persistent`)
 
 Mon
index 27151e60b2202fdf298b77670e3d8eaeba1b2766..5543ff316fff27de5bf5207d57b8d18013ee863f 100644 (file)
@@ -534,6 +534,7 @@ CompatSet Monitor::get_supported_features()
   compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_PACIFIC);
   compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_QUINCY);
   compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_REEF);
+  compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_SQUID);
   return compat;
 }
 
@@ -2512,6 +2513,13 @@ void Monitor::apply_monmap_to_compatset_features()
     ceph_assert(HAVE_FEATURE(quorum_con_features, SERVER_REEF));
     new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_REEF);
   }
+  if (monmap_features.contains_all(ceph::features::mon::FEATURE_SQUID)) {
+    ceph_assert(ceph::features::mon::get_persistent().contains_all(
+           ceph::features::mon::FEATURE_SQUID));
+    // this feature should only ever be set if the quorum supports it.
+    ceph_assert(HAVE_FEATURE(quorum_con_features, SERVER_SQUID));
+    new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_SQUID);
+  }
 
   dout(5) << __func__ << dendl;
   _apply_compatset_features(new_features);
@@ -2550,6 +2558,9 @@ void Monitor::calc_quorum_requirements()
   if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_REEF)) {
     required_features |= CEPH_FEATUREMASK_SERVER_REEF;
   }
+  if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_SQUID)) {
+    required_features |= CEPH_FEATUREMASK_SERVER_SQUID;
+  }
 
   // monmap
   if (monmap->get_required_features().contains_all(
index 7f9a16a9a36c8709fd339ac1b1d24929c49f0e33..ed1e2a4e8a95dbb135a8ede858245dc547a70ff3 100644 (file)
@@ -1116,6 +1116,7 @@ public:
 #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")
+#define CEPH_MON_FEATURE_INCOMPAT_SQUID CompatSet::Feature(16, "squid ondisk layout")
 // make sure you add your feature to Monitor::get_supported_features