From: Sage Weil Date: Mon, 28 Aug 2017 19:24:46 +0000 (-0400) Subject: mon: CEPH_MON_FEATURE_INCOMPAT_MIMIC X-Git-Tag: v13.0.1~1005^2~36 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=59325c45ff6f423b866e6b133ad0be752b04dbbb;p=ceph-ci.git mon: CEPH_MON_FEATURE_INCOMPAT_MIMIC Signed-off-by: Sage Weil --- diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index 3cb22549d95..5e8eb4d3c65 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 fc9772601cb..c6b4a365e32 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