From aec8aeb9dce0344f1f7197297d154a715f063c88 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 22 Mar 2019 17:29:43 -0500 Subject: [PATCH] mon: add ondisk incompat octopus feature Signed-off-by: Sage Weil --- src/mon/Monitor.cc | 11 +++++++++++ src/mon/Monitor.h | 1 + 2 files changed, 12 insertions(+) diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index de5ed1edf4b..1f886542e3f 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -421,6 +421,7 @@ CompatSet Monitor::get_supported_features() compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_LUMINOUS); compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_MIMIC); compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_NAUTILUS); + compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_OCTOPUS); return compat; } @@ -2393,6 +2394,13 @@ void Monitor::apply_monmap_to_compatset_features() ceph_assert(HAVE_FEATURE(quorum_con_features, SERVER_NAUTILUS)); new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_NAUTILUS); } + if (monmap_features.contains_all(ceph::features::mon::FEATURE_OCTOPUS)) { + ceph_assert(ceph::features::mon::get_persistent().contains_all( + ceph::features::mon::FEATURE_OCTOPUS)); + // this feature should only ever be set if the quorum supports it. + ceph_assert(HAVE_FEATURE(quorum_con_features, SERVER_OCTOPUS)); + new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_OCTOPUS); + } dout(5) << __func__ << dendl; _apply_compatset_features(new_features); @@ -2419,6 +2427,9 @@ void Monitor::calc_quorum_requirements() required_features |= CEPH_FEATUREMASK_SERVER_NAUTILUS | CEPH_FEATUREMASK_CEPHX_V2; } + if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_OCTOPUS)) { + required_features |= CEPH_FEATUREMASK_SERVER_OCTOPUS; + } // monmap if (monmap->get_required_features().contains_all( diff --git a/src/mon/Monitor.h b/src/mon/Monitor.h index c57c2ec4936..907dbaeddc7 100644 --- a/src/mon/Monitor.h +++ b/src/mon/Monitor.h @@ -1046,6 +1046,7 @@ public: #define CEPH_MON_FEATURE_INCOMPAT_LUMINOUS CompatSet::Feature(9, "luminous ondisk layout") #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(11, "octopus ondisk layout") // make sure you add your feature to Monitor::get_supported_features -- 2.39.5