From 5b6c451e3fdaf0785b197fdfacf1c782b932bec9 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 28 Aug 2017 15:21:44 -0400 Subject: [PATCH] mon: CEPH_MON_FEATURE_INCOMPAT_LUMINOUS - set this once we have a luminous quorum - require luminous if we have this set locally - include this on mkfs 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 4d8b6b8f628bc..eb720e183febe 100755 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -370,6 +370,7 @@ CompatSet Monitor::get_supported_features() compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_ERASURE_CODE_PLUGINS_V2); 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); return compat; } @@ -2083,6 +2084,13 @@ void Monitor::apply_monmap_to_compatset_features() assert(HAVE_FEATURE(quorum_con_features, SERVER_KRAKEN)); new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_KRAKEN); } + if (monmap_features.contains_all(ceph::features::mon::FEATURE_LUMINOUS)) { + assert(ceph::features::mon::get_persistent().contains_all( + ceph::features::mon::FEATURE_LUMINOUS)); + // this feature should only ever be set if the quorum supports it. + assert(HAVE_FEATURE(quorum_con_features, SERVER_LUMINOUS)); + new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_LUMINOUS); + } dout(5) << __func__ << dendl; _apply_compatset_features(new_features); @@ -2108,6 +2116,9 @@ void Monitor::calc_quorum_requirements() if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_KRAKEN)) { required_features |= CEPH_FEATUREMASK_SERVER_KRAKEN; } + if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_LUMINOUS)) { + required_features |= CEPH_FEATUREMASK_SERVER_LUMINOUS; + } // monmap if (monmap->get_required_features().contains_all( diff --git a/src/mon/Monitor.h b/src/mon/Monitor.h index fa4ba9fa8f56f..e61f4b99e6df7 100644 --- a/src/mon/Monitor.h +++ b/src/mon/Monitor.h @@ -993,6 +993,7 @@ public: #define CEPH_MON_FEATURE_INCOMPAT_ERASURE_CODE_PLUGINS_V2 CompatSet::Feature(6, "support isa/lrc erasure code") #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") // make sure you add your feature to Monitor::get_supported_features -- 2.39.5