mirror of
https://github.com/ceph/ceph
synced 2025-01-10 21:20:46 +00:00
Merge pull request #38239 from tchaikov/wip-48320
mon/OSDMonitor: drop osd_epoch of manually marked out osd Reviewed-by: Josh Durgin <jdurgin@redhat.com>
This commit is contained in:
commit
be36679b5c
@ -886,14 +886,20 @@ void OSDMonitor::update_from_paxos(bool *need_bootstrap)
|
|||||||
t = MonitorDBStore::TransactionRef();
|
t = MonitorDBStore::TransactionRef();
|
||||||
tx_size = 0;
|
tx_size = 0;
|
||||||
}
|
}
|
||||||
for (const auto &osd_state : inc.new_state) {
|
for (const auto [osd, state] : inc.new_state) {
|
||||||
if (osd_state.second & CEPH_OSD_UP) {
|
if (state & CEPH_OSD_UP) {
|
||||||
// could be marked up *or* down, but we're too lazy to check which
|
// could be marked up *or* down, but we're too lazy to check which
|
||||||
last_osd_report.erase(osd_state.first);
|
last_osd_report.erase(osd);
|
||||||
}
|
}
|
||||||
if (osd_state.second & CEPH_OSD_OUT) {
|
if (state & CEPH_OSD_OUT) {
|
||||||
// could be marked in *or* out, but we can safely drop it
|
// could be marked in *or* out, but we can safely drop it
|
||||||
osd_epochs.erase(osd_state.first);
|
osd_epochs.erase(osd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (const auto [osd, weight] : inc.new_weight) {
|
||||||
|
if (weight == CEPH_OSD_OUT) {
|
||||||
|
// manually marked out, so drop it
|
||||||
|
osd_epochs.erase(osd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1064,19 +1070,20 @@ void OSDMonitor::start_mapping()
|
|||||||
|
|
||||||
void OSDMonitor::update_msgr_features()
|
void OSDMonitor::update_msgr_features()
|
||||||
{
|
{
|
||||||
set<int> types;
|
const int types[] = {
|
||||||
types.insert((int)entity_name_t::TYPE_OSD);
|
entity_name_t::TYPE_OSD,
|
||||||
types.insert((int)entity_name_t::TYPE_CLIENT);
|
entity_name_t::TYPE_CLIENT,
|
||||||
types.insert((int)entity_name_t::TYPE_MDS);
|
entity_name_t::TYPE_MDS,
|
||||||
types.insert((int)entity_name_t::TYPE_MON);
|
entity_name_t::TYPE_MON
|
||||||
for (set<int>::iterator q = types.begin(); q != types.end(); ++q) {
|
};
|
||||||
|
for (int type : types) {
|
||||||
uint64_t mask;
|
uint64_t mask;
|
||||||
uint64_t features = osdmap.get_features(*q, &mask);
|
uint64_t features = osdmap.get_features(type, &mask);
|
||||||
if ((mon->messenger->get_policy(*q).features_required & mask) != features) {
|
if ((mon->messenger->get_policy(type).features_required & mask) != features) {
|
||||||
dout(0) << "crush map has features " << features << ", adjusting msgr requires" << dendl;
|
dout(0) << "crush map has features " << features << ", adjusting msgr requires" << dendl;
|
||||||
ceph::net::Policy p = mon->messenger->get_policy(*q);
|
ceph::net::Policy p = mon->messenger->get_policy(type);
|
||||||
p.features_required = (p.features_required & ~mask) | features;
|
p.features_required = (p.features_required & ~mask) | features;
|
||||||
mon->messenger->set_policy(*q, p);
|
mon->messenger->set_policy(type, p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user