diff options
Diffstat (limited to 'src/mon/Monitor.cc')
-rw-r--r-- | src/mon/Monitor.cc | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index d1c84eaf2b5..2a8df86004e 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -388,6 +388,7 @@ CompatSet Monitor::get_supported_features() compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_KRAKEN); compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_LUMINOUS); compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_MIMIC); + compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_NAUTILUS); return compat; } @@ -2178,6 +2179,13 @@ void Monitor::apply_monmap_to_compatset_features() assert(HAVE_FEATURE(quorum_con_features, SERVER_MIMIC)); new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_MIMIC); } + if (monmap_features.contains_all(ceph::features::mon::FEATURE_NAUTILUS)) { + assert(ceph::features::mon::get_persistent().contains_all( + ceph::features::mon::FEATURE_NAUTILUS)); + // this feature should only ever be set if the quorum supports it. + assert(HAVE_FEATURE(quorum_con_features, SERVER_NAUTILUS)); + new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_NAUTILUS); + } dout(5) << __func__ << dendl; _apply_compatset_features(new_features); @@ -2200,6 +2208,9 @@ void Monitor::calc_quorum_requirements() if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_MIMIC)) { required_features |= CEPH_FEATUREMASK_SERVER_MIMIC; } + if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_NAUTILUS)) { + required_features |= CEPH_FEATUREMASK_SERVER_NAUTILUS; + } // monmap if (monmap->get_required_features().contains_all( @@ -2214,6 +2225,10 @@ void Monitor::calc_quorum_requirements() ceph::features::mon::FEATURE_MIMIC)) { required_features |= CEPH_FEATUREMASK_SERVER_MIMIC; } + if (monmap->get_required_features().contains_all( + ceph::features::mon::FEATURE_NAUTILUS)) { + required_features |= CEPH_FEATUREMASK_SERVER_NAUTILUS; + } dout(10) << __func__ << " required_features " << required_features << dendl; } |