From d777adb89e058e8fc44bfe5363ef62c7f705c504 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 27 Jan 2021 14:32:31 -0600 Subject: [PATCH] mon: update for quincy ondisk features Signed-off-by: Sage Weil --- doc/dev/release-checklists.rst | 8 ++++---- src/mon/Monitor.cc | 11 +++++++++++ src/mon/Monitor.h | 1 + 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/doc/dev/release-checklists.rst b/doc/dev/release-checklists.rst index fd577c9d1f9..0793469a211 100644 --- a/doc/dev/release-checklists.rst +++ b/doc/dev/release-checklists.rst @@ -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 --- diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index 256ad58a6de..c58e6e528a4 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -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( diff --git a/src/mon/Monitor.h b/src/mon/Monitor.h index 95f0259bcb1..1b8bd8c7c6d 100644 --- a/src/mon/Monitor.h +++ b/src/mon/Monitor.h @@ -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 -- 2.39.5