Compatsets
----------
-- [ ] mon/Monitor.h (`CEPH_MON_FEATURE_INCOMPAT_X`)
-- [ ] mon/Monitor.cc (include in `get_supported_features()`)
-- [ ] mon/Monitor.cc (`apply_monmap_to_compatset_features()`)
-- [ ] mon/Monitor.cc (`calc_quorum_requirements()`)
+- [x] mon/Monitor.h (`CEPH_MON_FEATURE_INCOMPAT_X`)
+- [x] mon/Monitor.cc (include in `get_supported_features()`)
+- [x] mon/Monitor.cc (`apply_monmap_to_compatset_features()`)
+- [x] mon/Monitor.cc (`calc_quorum_requirements()`)
- [ ] test/cli/monmaptool/feature-set-unset-list.t (`supported`, `persistent`)
Mon
compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_PACIFIC);
compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_QUINCY);
compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_REEF);
+ compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_SQUID);
return compat;
}
ceph_assert(HAVE_FEATURE(quorum_con_features, SERVER_REEF));
new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_REEF);
}
+ if (monmap_features.contains_all(ceph::features::mon::FEATURE_SQUID)) {
+ ceph_assert(ceph::features::mon::get_persistent().contains_all(
+ ceph::features::mon::FEATURE_SQUID));
+ // this feature should only ever be set if the quorum supports it.
+ ceph_assert(HAVE_FEATURE(quorum_con_features, SERVER_SQUID));
+ new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_SQUID);
+ }
dout(5) << __func__ << dendl;
_apply_compatset_features(new_features);
if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_REEF)) {
required_features |= CEPH_FEATUREMASK_SERVER_REEF;
}
+ if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_SQUID)) {
+ required_features |= CEPH_FEATUREMASK_SERVER_SQUID;
+ }
// monmap
if (monmap->get_required_features().contains_all(
#define CEPH_MON_FEATURE_INCOMPAT_PACIFIC CompatSet::Feature(13, "pacific ondisk layout")
#define CEPH_MON_FEATURE_INCOMPAT_QUINCY CompatSet::Feature(14, "quincy ondisk layout")
#define CEPH_MON_FEATURE_INCOMPAT_REEF CompatSet::Feature(15, "reef ondisk layout")
+#define CEPH_MON_FEATURE_INCOMPAT_SQUID CompatSet::Feature(16, "squid ondisk layout")
// make sure you add your feature to Monitor::get_supported_features