Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

include/ceph_features: deprecate a bunch of features #18546

Merged
merged 23 commits into from
Oct 31, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
b10f5d4
include/ceph_features: deprecate HAMMER_0_94_4
liewegas Oct 25, 2017
a18406b
mon/OSDMonitor: drop --force for use_gmt_hitset
liewegas Oct 25, 2017
86c5521
mon/OSDMonitor: drop various other use_gmt_hitset checks
liewegas Oct 25, 2017
54ff667
include/ceph_features: deprecated OSD_HITSET_GMT
liewegas Oct 25, 2017
d3b8ef1
mon,osd: ignore ERASURE_CODE_PLUGINS_V[23]
liewegas Oct 25, 2017
75ffebb
include/ceph_features: deprecate ERASURE_CODE_PLUGINGS_V[23]
liewegas Oct 25, 2017
8053f9c
osd/PrimaryLogPG: ignore PROXY_WRITE_FEATURES feature
liewegas Oct 25, 2017
0bc9e37
include/ceph_features: deprecate OSD_PROXY_WRITE_FEATURES
liewegas Oct 25, 2017
3fb1523
mon/OSDMonitor: drop OSD_BITWISE_HOBJ_SORT check
liewegas Oct 25, 2017
81ea0c7
mon/OSDMonitor: drop feature check for set sortbitwise
liewegas Oct 25, 2017
3dddc02
osd/OSDMap: unconditionally warn on !sortbitwise
liewegas Oct 25, 2017
2d435af
include/ceph_features: deprecate OSD_BITWISE_HOBJ_SORT
liewegas Oct 25, 2017
afa11a2
include/ceph_features: deprecate OSD_PROXY_WRITE_FEATURES
liewegas Oct 25, 2017
bd13340
include/ceph_features: drop OSDSUBOP_NO_SNAPCONTEXT
liewegas Oct 25, 2017
ceb31ee
mon/OSDMonitor: assume peer handles osdmap forward requests
liewegas Oct 25, 2017
681860e
include/ceph_features: deprecated MON_ROUTE_OSDMAP
liewegas Oct 25, 2017
875d7ad
include/ceph_features: drop dup and unused TMAP2OMAP feature
liewegas Oct 25, 2017
513d3a0
mon: ignore OSD_ERASURE_CODES
liewegas Oct 25, 2017
c1fbf35
osd: ignore OSD_ERASURE_CODES
liewegas Oct 25, 2017
26c9b66
osd/OSDMap: ignore OSD_ERASURE_CODES for get_min_compat_client
liewegas Oct 25, 2017
17bf9c8
mon: ignore PRIMARY_AFFINITY for purposes of complaning about missing…
liewegas Oct 25, 2017
5f147f1
mon/OSDMOnitor: ignore PRIMARY_AFFINITY
liewegas Oct 25, 2017
03a670a
include/ceph_features: deprecated OSD_ERASURE_CODES
liewegas Oct 25, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
38 changes: 18 additions & 20 deletions src/include/ceph_features.h
Original file line number Diff line number Diff line change
Expand Up @@ -125,15 +125,14 @@ DEFINE_CEPH_FEATURE_RETIRED(34, 1, OSD_PACKED_RECOVERY, JEWEL, LUMINOUS)
DEFINE_CEPH_FEATURE(35, 1, OSD_CACHEPOOL)
DEFINE_CEPH_FEATURE(36, 1, CRUSH_V2)
DEFINE_CEPH_FEATURE(37, 1, EXPORT_PEER)
DEFINE_CEPH_FEATURE(38, 1, OSD_ERASURE_CODES)
DEFINE_CEPH_FEATURE(38, 1, OSD_OSD_TMAP2OMAP) // overlap
DEFINE_CEPH_FEATURE_DEPRECATED(38, 1, OSD_ERASURE_CODES, MIMIC)
DEFINE_CEPH_FEATURE(39, 1, OSDMAP_ENC)
DEFINE_CEPH_FEATURE(40, 1, MDS_INLINE_DATA)
DEFINE_CEPH_FEATURE(41, 1, CRUSH_TUNABLES3)
DEFINE_CEPH_FEATURE(41, 1, OSD_PRIMARY_AFFINITY) // overlap
DEFINE_CEPH_FEATURE(42, 1, MSGR_KEEPALIVE2)
DEFINE_CEPH_FEATURE(43, 1, OSD_POOLRESEND)
DEFINE_CEPH_FEATURE(44, 1, ERASURE_CODE_PLUGINS_V2)
DEFINE_CEPH_FEATURE_DEPRECATED(44, 1, ERASURE_CODE_PLUGINS_V2, MIMIC)
DEFINE_CEPH_FEATURE_RETIRED(45, 1, OSD_SET_ALLOC_HINT, JEWEL, LUMINOUS)

DEFINE_CEPH_FEATURE(46, 1, OSD_FADVISE_FLAGS)
Expand All @@ -146,16 +145,15 @@ DEFINE_CEPH_FEATURE(48, 1, CRUSH_V4)
DEFINE_CEPH_FEATURE_RETIRED(49, 1, OSD_MIN_SIZE_RECOVERY, JEWEL, LUMINOUS)
DEFINE_CEPH_FEATURE_RETIRED(49, 1, OSD_PROXY_FEATURES, JEWEL, LUMINOUS) // overlap

DEFINE_CEPH_FEATURE(50, 1, MON_METADATA)
DEFINE_CEPH_FEATURE(51, 1, OSD_BITWISE_HOBJ_SORT)
DEFINE_CEPH_FEATURE(52, 1, OSD_PROXY_WRITE_FEATURES)
DEFINE_CEPH_FEATURE(53, 1, ERASURE_CODE_PLUGINS_V3)
DEFINE_CEPH_FEATURE(54, 1, OSD_HITSET_GMT)
DEFINE_CEPH_FEATURE(55, 1, HAMMER_0_94_4)
DEFINE_CEPH_FEATURE_DEPRECATED(50, 1, MON_METADATA, MIMIC)
DEFINE_CEPH_FEATURE_DEPRECATED(51, 1, OSD_BITWISE_HOBJ_SORT, MIMIC)
DEFINE_CEPH_FEATURE_DEPRECATED(52, 1, OSD_PROXY_WRITE_FEATURES, MIMIC)
DEFINE_CEPH_FEATURE_DEPRECATED(53, 1, ERASURE_CODE_PLUGINS_V3, MIMIC)
DEFINE_CEPH_FEATURE_DEPRECATED(54, 1, OSD_HITSET_GMT, MIMIC)
DEFINE_CEPH_FEATURE_DEPRECATED(55, 1, HAMMER_0_94_4, MIMIC)
DEFINE_CEPH_FEATURE(56, 1, NEW_OSDOP_ENCODING)
DEFINE_CEPH_FEATURE(57, 1, MON_STATEFUL_SUB)
DEFINE_CEPH_FEATURE(57, 1, MON_ROUTE_OSDMAP) // overlap
DEFINE_CEPH_FEATURE(57, 1, OSDSUBOP_NO_SNAPCONTEXT) // overlap
DEFINE_CEPH_FEATURE_DEPRECATED(57, 1, MON_ROUTE_OSDMAP, MIMIC) // overlap
DEFINE_CEPH_FEATURE(57, 1, SERVER_JEWEL) // overlap
DEFINE_CEPH_FEATURE(58, 1, CRUSH_TUNABLES5)
DEFINE_CEPH_FEATURE(58, 1, NEW_OSDOPREPLY_ENCODING) // overlap
Expand Down Expand Up @@ -201,25 +199,25 @@ DEFINE_CEPH_FEATURE_DEPRECATED(63, 1, RESERVED_BROKEN, LUMINOUS) // client-facin
CEPH_FEATURE_OSD_CACHEPOOL | \
CEPH_FEATURE_CRUSH_V2 | \
CEPH_FEATURE_EXPORT_PEER | \
CEPH_FEATURE_OSD_ERASURE_CODES | \
DEPRECATED_CEPH_FEATURE_OSD_ERASURE_CODES | \
CEPH_FEATURE_OSDMAP_ENC | \
CEPH_FEATURE_MDS_INLINE_DATA | \
CEPH_FEATURE_CRUSH_TUNABLES3 | \
CEPH_FEATURE_OSD_PRIMARY_AFFINITY | \
CEPH_FEATURE_MSGR_KEEPALIVE2 | \
CEPH_FEATURE_OSD_POOLRESEND | \
CEPH_FEATURE_ERASURE_CODE_PLUGINS_V2 | \
DEPRECATED_CEPH_FEATURE_ERASURE_CODE_PLUGINS_V2 | \
CEPH_FEATURE_OSD_FADVISE_FLAGS | \
CEPH_FEATURE_MDS_QUOTA | \
CEPH_FEATURE_CRUSH_V4 | \
CEPH_FEATURE_MON_METADATA | \
CEPH_FEATURE_OSD_BITWISE_HOBJ_SORT | \
CEPH_FEATURE_ERASURE_CODE_PLUGINS_V3 | \
CEPH_FEATURE_OSD_PROXY_WRITE_FEATURES | \
CEPH_FEATURE_OSD_HITSET_GMT | \
CEPH_FEATURE_HAMMER_0_94_4 | \
DEPRECATED_CEPH_FEATURE_MON_METADATA | \
DEPRECATED_CEPH_FEATURE_OSD_BITWISE_HOBJ_SORT | \
DEPRECATED_CEPH_FEATURE_ERASURE_CODE_PLUGINS_V3 | \
DEPRECATED_CEPH_FEATURE_OSD_PROXY_WRITE_FEATURES | \
DEPRECATED_CEPH_FEATURE_OSD_HITSET_GMT | \
DEPRECATED_CEPH_FEATURE_HAMMER_0_94_4 | \
CEPH_FEATURE_MON_STATEFUL_SUB | \
CEPH_FEATURE_MON_ROUTE_OSDMAP | \
DEPRECATED_CEPH_FEATURE_MON_ROUTE_OSDMAP | \
CEPH_FEATURE_CRUSH_TUNABLES5 | \
CEPH_FEATURE_SERVER_JEWEL | \
CEPH_FEATURE_FS_FILE_LAYOUT_V2 | \
Expand Down
31 changes: 7 additions & 24 deletions src/mon/Monitor.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1627,12 +1627,10 @@ void Monitor::handle_probe_probe(MonOpRequestRef op)
if (missing) {
dout(1) << " peer " << m->get_source_addr() << " missing features "
<< missing << dendl;
if (m->get_connection()->has_feature(CEPH_FEATURE_OSD_PRIMARY_AFFINITY)) {
MMonProbe *r = new MMonProbe(monmap->fsid, MMonProbe::OP_MISSING_FEATURES,
name, has_ever_joined);
m->required_features = required_features;
m->get_connection()->send_message(r);
}
MMonProbe *r = new MMonProbe(monmap->fsid, MMonProbe::OP_MISSING_FEATURES,
name, has_ever_joined);
m->required_features = required_features;
m->get_connection()->send_message(r);
goto out;
}

Expand Down Expand Up @@ -2036,18 +2034,12 @@ void Monitor::_apply_compatset_features(CompatSet &new_features)
void Monitor::apply_quorum_to_compatset_features()
{
CompatSet new_features(features);
if (quorum_con_features & CEPH_FEATURE_OSD_ERASURE_CODES) {
new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_OSD_ERASURE_CODES);
}
new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_OSD_ERASURE_CODES);
if (quorum_con_features & CEPH_FEATURE_OSDMAP_ENC) {
new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_OSDMAP_ENC);
}
if (quorum_con_features & CEPH_FEATURE_ERASURE_CODE_PLUGINS_V2) {
new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_ERASURE_CODE_PLUGINS_V2);
}
if (quorum_con_features & CEPH_FEATURE_ERASURE_CODE_PLUGINS_V3) {
new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_ERASURE_CODE_PLUGINS_V3);
}
new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_ERASURE_CODE_PLUGINS_V2);
new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_ERASURE_CODE_PLUGINS_V3);
dout(5) << __func__ << dendl;
_apply_compatset_features(new_features);
}
Expand Down Expand Up @@ -2098,18 +2090,9 @@ void Monitor::calc_quorum_requirements()
required_features = 0;

// compatset
if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_OSD_ERASURE_CODES)) {
required_features |= CEPH_FEATURE_OSD_ERASURE_CODES;
}
if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_OSDMAP_ENC)) {
required_features |= CEPH_FEATURE_OSDMAP_ENC;
}
if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_ERASURE_CODE_PLUGINS_V2)) {
required_features |= CEPH_FEATURE_ERASURE_CODE_PLUGINS_V2;
}
if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_ERASURE_CODE_PLUGINS_V3)) {
required_features |= CEPH_FEATURE_ERASURE_CODE_PLUGINS_V3;
}
if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_KRAKEN)) {
required_features |= CEPH_FEATUREMASK_SERVER_KRAKEN;
}
Expand Down
107 changes: 3 additions & 104 deletions src/mon/OSDMonitor.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2113,33 +2113,6 @@ bool OSDMonitor::preprocess_boot(MonOpRequestRef op)
assert(m->get_orig_source_inst().name.is_osd());

// check if osd has required features to boot
if ((osdmap.get_features(CEPH_ENTITY_TYPE_OSD, NULL) &
CEPH_FEATURE_OSD_ERASURE_CODES) &&
!(m->get_connection()->get_features() & CEPH_FEATURE_OSD_ERASURE_CODES)) {
dout(0) << __func__ << " osdmap requires erasure code but osd at "
<< m->get_orig_source_inst()
<< " doesn't announce support -- ignore" << dendl;
goto ignore;
}

if ((osdmap.get_features(CEPH_ENTITY_TYPE_OSD, NULL) &
CEPH_FEATURE_ERASURE_CODE_PLUGINS_V2) &&
!(m->get_connection()->get_features() & CEPH_FEATURE_ERASURE_CODE_PLUGINS_V2)) {
dout(0) << __func__ << " osdmap requires erasure code plugins v2 but osd at "
<< m->get_orig_source_inst()
<< " doesn't announce support -- ignore" << dendl;
goto ignore;
}

if ((osdmap.get_features(CEPH_ENTITY_TYPE_OSD, NULL) &
CEPH_FEATURE_ERASURE_CODE_PLUGINS_V3) &&
!(m->get_connection()->get_features() & CEPH_FEATURE_ERASURE_CODE_PLUGINS_V3)) {
dout(0) << __func__ << " osdmap requires erasure code plugins v3 but osd at "
<< m->get_orig_source_inst()
<< " doesn't announce support -- ignore" << dendl;
goto ignore;
}

if (osdmap.require_osd_release >= CEPH_RELEASE_LUMINOUS &&
!HAVE_FEATURE(m->osd_features, SERVER_LUMINOUS)) {
mon->clog->info() << "disallowing boot of OSD "
Expand Down Expand Up @@ -2170,14 +2143,6 @@ bool OSDMonitor::preprocess_boot(MonOpRequestRef op)
goto ignore;
}

if (osdmap.test_flag(CEPH_OSDMAP_SORTBITWISE) &&
!(m->osd_features & CEPH_FEATURE_OSD_BITWISE_HOBJ_SORT)) {
mon->clog->info() << "disallowing boot of OSD "
<< m->get_orig_source_inst()
<< " because 'sortbitwise' osdmap flag is set and OSD lacks the OSD_BITWISE_HOBJ_SORT feature";
goto ignore;
}

if (osdmap.test_flag(CEPH_OSDMAP_RECOVERY_DELETES) &&
!(m->osd_features & CEPH_FEATURE_OSD_RECOVERY_DELETES)) {
mon->clog->info() << "disallowing boot of OSD "
Expand All @@ -2186,20 +2151,6 @@ bool OSDMonitor::preprocess_boot(MonOpRequestRef op)
goto ignore;
}

if (any_of(osdmap.get_pools().begin(),
osdmap.get_pools().end(),
[](const std::pair<int64_t,pg_pool_t>& pool)
{ return pool.second.use_gmt_hitset; })) {
assert(osdmap.get_num_up_osds() == 0 ||
osdmap.get_up_osd_features() & CEPH_FEATURE_OSD_HITSET_GMT);
if (!(m->osd_features & CEPH_FEATURE_OSD_HITSET_GMT)) {
dout(0) << __func__ << " one or more pools uses GMT hitsets but osd at "
<< m->get_orig_source_inst()
<< " doesn't announce support -- ignore" << dendl;
goto ignore;
}
}

// make sure upgrades stop at nautilus
if (HAVE_FEATURE(m->osd_features, SERVER_O) &&
osdmap.require_osd_release < CEPH_RELEASE_NAUTILUS) {
Expand Down Expand Up @@ -2958,8 +2909,7 @@ void OSDMonitor::send_incremental(MonOpRequestRef op, epoch_t first)
MonSession *s = op->get_session();
assert(s);

if (s->proxy_con &&
s->proxy_con->has_feature(CEPH_FEATURE_MON_ROUTE_OSDMAP)) {
if (s->proxy_con) {
// oh, we can tell the other mon to do it
dout(10) << __func__ << " asking proxying mon to send_incremental from "
<< first << dendl;
Expand Down Expand Up @@ -5577,8 +5527,7 @@ int OSDMonitor::prepare_new_pool(string& name, uint64_t auid,
pi->set_flag(pg_pool_t::FLAG_NOPGCHANGE);
if (g_conf->osd_pool_default_flag_nosizechange)
pi->set_flag(pg_pool_t::FLAG_NOSIZECHANGE);
if (g_conf->osd_pool_use_gmt_hitset &&
(osdmap.get_up_osd_features() & CEPH_FEATURE_OSD_HITSET_GMT))
if (g_conf->osd_pool_use_gmt_hitset)
pi->use_gmt_hitset = true;
else
pi->use_gmt_hitset = false;
Expand Down Expand Up @@ -5900,18 +5849,6 @@ int OSDMonitor::prepare_command_pool_set(map<string,cmd_vartype> &cmdmap,
bloomp->set_fpp(f);
} else if (var == "use_gmt_hitset") {
if (val == "true" || (interr.empty() && n == 1)) {
string force;
cmd_getval(cct, cmdmap, "force", force);
if (!osdmap.get_num_up_osds() && force != "--yes-i-really-mean-it") {
ss << "Not advisable to continue since no OSDs are up. Pass "
<< "--yes-i-really-mean-it if you really wish to continue.";
return -EPERM;
}
if (!(osdmap.get_up_osd_features() & CEPH_FEATURE_OSD_HITSET_GMT)
&& force != "--yes-i-really-mean-it") {
ss << "not all OSDs support GMT hit set.";
return -EINVAL;
}
p.use_gmt_hitset = true;
} else {
ss << "expecting value 'true' or '1'";
Expand Down Expand Up @@ -8144,19 +8081,6 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
dout(20) << "erasure code profile " << name << " try again" << dendl;
goto wait;
} else {
if (plugin == "isa" || plugin == "lrc") {
err = check_cluster_features(CEPH_FEATURE_ERASURE_CODE_PLUGINS_V2, ss);
if (err == -EAGAIN)
goto wait;
if (err)
goto reply;
} else if (plugin == "shec") {
err = check_cluster_features(CEPH_FEATURE_ERASURE_CODE_PLUGINS_V3, ss);
if (err == -EAGAIN)
goto wait;
if (err)
goto reply;
}
err = normalize_profile(name, profile_map, force, &ss);
if (err)
goto reply;
Expand Down Expand Up @@ -8500,20 +8424,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
else if (key == "notieragent")
return prepare_set_flag(op, CEPH_OSDMAP_NOTIERAGENT);
else if (key == "sortbitwise") {
if (!osdmap.get_num_up_osds() && sure != "--yes-i-really-mean-it") {
ss << "Not advisable to continue since no OSDs are up. Pass "
<< "--yes-i-really-mean-it if you really wish to continue.";
err = -EPERM;
goto reply;
}
if ((osdmap.get_up_osd_features() & CEPH_FEATURE_OSD_BITWISE_HOBJ_SORT)
|| sure == "--yes-i-really-mean-it") {
return prepare_set_flag(op, CEPH_OSDMAP_SORTBITWISE);
} else {
ss << "not all up OSDs have OSD_BITWISE_HOBJ_SORT feature";
err = -EPERM;
goto reply;
}
return prepare_set_flag(op, CEPH_OSDMAP_SORTBITWISE);
} else if (key == "recovery_deletes") {
if (!osdmap.get_num_up_osds() && sure != "--yes-i-really-mean-it") {
ss << "Not advisable to continue since no OSDs are up. Pass "
Expand Down Expand Up @@ -9452,11 +9363,6 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
err = -EPERM;
goto reply;
}
err = check_cluster_features(CEPH_FEATURE_OSD_PRIMARY_AFFINITY, ss);
if (err == -EAGAIN)
goto wait;
if (err < 0)
goto reply;
if (osdmap.exists(id)) {
pending_inc.new_primary_affinity[id] = ww;
ss << "set osd." << id << " primary-affinity to " << w << " (" << ios::hex << ww << ios::dec << ")";
Expand Down Expand Up @@ -9930,13 +9836,6 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
if (pool_type_str == "replicated") {
pool_type = pg_pool_t::TYPE_REPLICATED;
} else if (pool_type_str == "erasure") {
err = check_cluster_features(CEPH_FEATURE_CRUSH_V2 |
CEPH_FEATURE_OSD_ERASURE_CODES,
ss);
if (err == -EAGAIN)
goto wait;
if (err)
goto reply;
pool_type = pg_pool_t::TYPE_ERASURE;
} else {
ss << "unknown pool type '" << pool_type_str << "'";
Expand Down
3 changes: 1 addition & 2 deletions src/osd/OSD.cc
Original file line number Diff line number Diff line change
Expand Up @@ -7714,8 +7714,7 @@ void OSD::check_osdmap_features()
cluster_messenger->set_policy(entity_name_t::TYPE_OSD, p);
}

if ((features & CEPH_FEATURE_OSD_ERASURE_CODES) &&
!superblock.compat_features.incompat.contains(CEPH_OSD_FEATURE_INCOMPAT_SHARDS)) {
if (!superblock.compat_features.incompat.contains(CEPH_OSD_FEATURE_INCOMPAT_SHARDS)) {
dout(0) << __func__ << " enabling on-disk ERASURE CODES compat feature" << dendl;
superblock.compat_features.incompat.insert(CEPH_OSD_FEATURE_INCOMPAT_SHARDS);
ObjectStore::Transaction t;
Expand Down
25 changes: 2 additions & 23 deletions src/osd/OSDMap.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1310,10 +1310,6 @@ uint64_t OSDMap::get_features(int entity_type, uint64_t *pmask) const
if (pool.second.has_flag(pg_pool_t::FLAG_HASHPSPOOL)) {
features |= CEPH_FEATURE_OSDHASHPSPOOL;
}
if (pool.second.is_erasure() &&
entity_type != CEPH_ENTITY_TYPE_CLIENT) { // not for clients
features |= CEPH_FEATURE_OSD_ERASURE_CODES;
}
if (!pool.second.tiers.empty() ||
pool.second.is_tier()) {
features |= CEPH_FEATURE_OSD_CACHEPOOL;
Expand All @@ -1330,21 +1326,7 @@ uint64_t OSDMap::get_features(int entity_type, uint64_t *pmask) const
features |= CEPH_FEATURE_CRUSH_TUNABLES5;
}
}
if (entity_type == CEPH_ENTITY_TYPE_OSD) {
for (auto &erasure_code_profile : erasure_code_profiles) {
auto& profile = erasure_code_profile.second;
const auto& plugin = profile.find("plugin");
if (plugin != profile.end()) {
if (plugin->second == "isa" || plugin->second == "lrc")
features |= CEPH_FEATURE_ERASURE_CODE_PLUGINS_V2;
if (plugin->second == "shec")
features |= CEPH_FEATURE_ERASURE_CODE_PLUGINS_V3;
}
}
}
mask |= CEPH_FEATURE_OSDHASHPSPOOL | CEPH_FEATURE_OSD_CACHEPOOL;
if (entity_type != CEPH_ENTITY_TYPE_CLIENT)
mask |= CEPH_FEATURE_OSD_ERASURE_CODES;

if (osd_primary_affinity) {
for (int i = 0; i < max_osd; ++i) {
Expand Down Expand Up @@ -1392,7 +1374,6 @@ uint8_t OSDMap::get_min_compat_client() const
}
if (HAVE_FEATURE(f, OSD_PRIMARY_AFFINITY) || // v0.76-553-gf825624
HAVE_FEATURE(f, CRUSH_TUNABLES3) || // v0.76-395-ge20a55d
HAVE_FEATURE(f, OSD_ERASURE_CODES) || // v0.73-498-gbfc86a8
HAVE_FEATURE(f, OSD_CACHEPOOL)) { // v0.67-401-gb91c1c5
return CEPH_RELEASE_FIREFLY; // v0.80.0
}
Expand Down Expand Up @@ -4668,11 +4649,9 @@ void OSDMap::check_health(health_check_map_t *checks) const
}

// OSD_NO_SORTBITWISE
if (!test_flag(CEPH_OSDMAP_SORTBITWISE) &&
(get_up_osd_features() &
CEPH_FEATURE_OSD_BITWISE_HOBJ_SORT)) {
if (!test_flag(CEPH_OSDMAP_SORTBITWISE)) {
ostringstream ss;
ss << "no legacy OSD present but 'sortbitwise' flag is not set";
ss << "'sortbitwise' flag is not set";
checks->add("OSD_NO_SORTBITWISE", HEALTH_WARN, ss.str());
}

Expand Down
4 changes: 1 addition & 3 deletions src/osd/PG.cc
Original file line number Diff line number Diff line change
Expand Up @@ -544,9 +544,7 @@ bool PG::search_for_missing(
from, oinfo, omissing, ctx->handle);
if (found_missing && num_unfound_before != missing_loc.num_unfound())
publish_stats_to_osd();
if (found_missing &&
(get_osdmap()->get_features(CEPH_ENTITY_TYPE_OSD, NULL) &
CEPH_FEATURE_OSD_ERASURE_CODES)) {
if (found_missing) {
pg_info_t tinfo(oinfo);
tinfo.pgid.shard = pg_whoami.shard;
(*(ctx->info_map))[from.osd].push_back(
Expand Down