From 59325c45ff6f423b866e6b133ad0be752b04dbbb Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 28 Aug 2017 15:24:46 -0400 Subject: [PATCH] mon: CEPH_MON_FEATURE_INCOMPAT_MIMIC 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 3cb22549d9560..5e8eb4d3c65cd 100755 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -371,6 +371,7 @@ CompatSet Monitor::get_supported_features() compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_ERASURE_CODE_PLUGINS_V3); compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_KRAKEN); compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_LUMINOUS); + compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_MIMIC); return compat; } @@ -2092,6 +2093,13 @@ void Monitor::apply_monmap_to_compatset_features() assert(HAVE_FEATURE(quorum_con_features, SERVER_LUMINOUS)); new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_LUMINOUS); } + if (monmap_features.contains_all(ceph::features::mon::FEATURE_MIMIC)) { + assert(ceph::features::mon::get_persistent().contains_all( + ceph::features::mon::FEATURE_MIMIC)); + // this feature should only ever be set if the quorum supports it. + assert(HAVE_FEATURE(quorum_con_features, SERVER_MIMIC)); + new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_MIMIC); + } dout(5) << __func__ << dendl; _apply_compatset_features(new_features); @@ -2120,6 +2128,9 @@ void Monitor::calc_quorum_requirements() if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_LUMINOUS)) { required_features |= CEPH_FEATUREMASK_SERVER_LUMINOUS; } + if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_MIMIC)) { + required_features |= CEPH_FEATUREMASK_SERVER_MIMIC; + } // monmap if (monmap->get_required_features().contains_all( diff --git a/src/mon/Monitor.h b/src/mon/Monitor.h index fc9772601cb98..c6b4a365e32a6 100644 --- a/src/mon/Monitor.h +++ b/src/mon/Monitor.h @@ -1013,6 +1013,7 @@ public: #define CEPH_MON_FEATURE_INCOMPAT_ERASURE_CODE_PLUGINS_V3 CompatSet::Feature(7, "support shec erasure code") #define CEPH_MON_FEATURE_INCOMPAT_KRAKEN CompatSet::Feature(8, "support monmap features") #define CEPH_MON_FEATURE_INCOMPAT_LUMINOUS CompatSet::Feature(9, "luminous ondisk layout") +#define CEPH_MON_FEATURE_INCOMPAT_MIMIC CompatSet::Feature(10, "mimic ondisk layout") // make sure you add your feature to Monitor::get_supported_features -- 2.39.5