From: Sage Weil Date: Thu, 26 Mar 2020 02:30:15 +0000 (-0500) Subject: mon: persistent INCOMPAT_PACIFIC item X-Git-Tag: v16.1.0~2624^2~25 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=df82ac1d0d1e784228c3d31be0830b7c6e273a46;p=ceph.git mon: persistent INCOMPAT_PACIFIC item Signed-off-by: Sage Weil --- diff --git a/doc/dev/release-kickoff-checklist.rst b/doc/dev/release-kickoff-checklist.rst index 5ba9b22570bf7..6083d98bd0b35 100644 --- a/doc/dev/release-kickoff-checklist.rst +++ b/doc/dev/release-kickoff-checklist.rst @@ -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()) + diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index adda884d4a385..a99ef5595307b 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -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( diff --git a/src/mon/Monitor.h b/src/mon/Monitor.h index 5691f72cd2c34..096cc680e81b8 100644 --- a/src/mon/Monitor.h +++ b/src/mon/Monitor.h @@ -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