From: Sage Weil Date: Fri, 22 Mar 2019 22:29:43 +0000 (-0500) Subject: mon: add ondisk incompat octopus feature X-Git-Tag: v15.0.0^2~15 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=aec8aeb9dce0344f1f7197297d154a715f063c88;p=ceph.git mon: add ondisk incompat octopus feature Signed-off-by: Sage Weil --- 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