DEFINE_CEPH_FEATURE_RETIRED(33, 1, MON_SCRUB, JEWEL, LUMINOUS)
DEFINE_CEPH_FEATURE(33, 3, SERVER_QUINCY)
DEFINE_CEPH_FEATURE_RETIRED(34, 1, OSD_PACKED_RECOVERY, JEWEL, LUMINOUS)
-// available
+DEFINE_CEPH_FEATURE(34, 3, RANGE_BLOCKLIST)
DEFINE_CEPH_FEATURE(35, 1, OSD_CACHEPOOL) // 3.14
DEFINE_CEPH_FEATURE(36, 1, CRUSH_V2) // 3.14
DEFINE_CEPH_FEATURE(37, 1, EXPORT_PEER) // 3.14
CEPH_FEATUREMASK_SERVER_PACIFIC | \
CEPH_FEATURE_OSD_FIXED_COLLECTION_LIST | \
CEPH_FEATUREMASK_SERVER_QUINCY | \
+ CEPH_FEATURE_RANGE_BLOCKLIST | \
0ULL)
#define CEPH_FEATURES_SUPPORTED_DEFAULT CEPH_FEATURES_ALL
goto reply;
}
else {
- if (!addr.is_cidr()) {
+ if (addr.is_cidr()) {
+ err = check_cluster_features(CEPH_FEATUREMASK_RANGE_BLOCKLIST, ss);
+ if (err) {
+ goto reply;
+ }
+ } else {
if (osdmap.require_osd_release >= ceph_release_t::nautilus) {
// always blocklist type ANY
addr.set_type(entity_addr_t::TYPE_ANY);
ob.erase(it);
}
};
- add_to_pending_blocklists(pending_inc.new_blocklist,
- pending_inc.old_blocklist,
- addr, expires);
+ if (addr.is_cidr()) {
+ add_to_pending_blocklists(pending_inc.new_range_blocklist,
+ pending_inc.old_range_blocklist,
+ addr, expires);
+
+ } else {
+ add_to_pending_blocklists(pending_inc.new_blocklist,
+ pending_inc.old_blocklist,
+ addr, expires);
+ }
ss << "blocklisting " << addr << " until " << expires << " (" << d << " sec)";
getline(ss, rs);
};
if (maybe_rm_from_pending_blocklists(addr, osdmap.blocklist,
pending_inc.old_blocklist,
- pending_inc.new_blocklist)) {
+ pending_inc.new_blocklist) ||
+ maybe_rm_from_pending_blocklists(addr, osdmap.range_blocklist,
+ pending_inc.old_range_blocklist,
+ pending_inc.new_range_blocklist)) {
ss << "un-blocklisting " << addr;
getline(ss, rs);
wait_for_finished_proposal(op, new Monitor::C_Command(mon, op, 0, rs,