]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: persistent INCOMPAT_PACIFIC item
authorSage Weil <sage@redhat.com>
Thu, 26 Mar 2020 02:30:15 +0000 (21:30 -0500)
committerSage Weil <sage@newdream.net>
Wed, 8 Apr 2020 13:09:41 +0000 (08:09 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
doc/dev/release-kickoff-checklist.rst
src/mon/Monitor.cc
src/mon/Monitor.h

index 5ba9b22570bf70bd6930523a1078c255b08f8d63..6083d98bd0b355b83a85cf343b2e88db036d1a55 100644 (file)
@@ -34,3 +34,19 @@ Scripts
 Misc
 ~~~~
 - [x] update src/ceph-volume/ceph_volume/__init__.py (__release__)
+
+Feature bits
+------------
+
+- [ ] ensure that SERVER_X is defined
+- [ ]
+
+
+Compatsets
+----------
+
+- [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())
+
index adda884d4a3855302d7309bbcc52c10b6004d3d2..a99ef5595307b77cf88af75551b2fe94de63e250 100644 (file)
@@ -509,6 +509,7 @@ CompatSet Monitor::get_supported_features()
   compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_MIMIC);
   compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_NAUTILUS);
   compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_OCTOPUS);
+  compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_PACIFIC);
   return compat;
 }
 
@@ -2453,6 +2454,13 @@ void Monitor::apply_monmap_to_compatset_features()
     ceph_assert(HAVE_FEATURE(quorum_con_features, SERVER_OCTOPUS));
     new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_OCTOPUS);
   }
+  if (monmap_features.contains_all(ceph::features::mon::FEATURE_PACIFIC)) {
+    ceph_assert(ceph::features::mon::get_persistent().contains_all(
+           ceph::features::mon::FEATURE_PACIFIC));
+    // this feature should only ever be set if the quorum supports it.
+    ceph_assert(HAVE_FEATURE(quorum_con_features, SERVER_PACIFIC));
+    new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_PACIFIC);
+  }
 
   dout(5) << __func__ << dendl;
   _apply_compatset_features(new_features);
@@ -2482,6 +2490,9 @@ void Monitor::calc_quorum_requirements()
   if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_OCTOPUS)) {
     required_features |= CEPH_FEATUREMASK_SERVER_OCTOPUS;
   }
+  if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_PACIFIC)) {
+    required_features |= CEPH_FEATUREMASK_SERVER_PACIFIC;
+  }
 
   // monmap
   if (monmap->get_required_features().contains_all(
index 5691f72cd2c3413e98675678167e438f50cbba76..096cc680e81b8694e31bcb05f72817ebeff15ce1 100644 (file)
@@ -1037,6 +1037,7 @@ public:
 #define CEPH_MON_FEATURE_INCOMPAT_MIMIC CompatSet::Feature(10, "mimic ondisk layout")
 #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")
 // make sure you add your feature to Monitor::get_supported_features