Skip to content

Commit ba750f4

Browse files
committed
mon/OSDMonitor: osd_epochs to store only UP osds
OUT OSDs can be the primary for a PG via pg_temp. Therfore, we should consider OUT as valid beacons. Signed-off-by: Matan Breizman <[email protected]>
1 parent 1f89b68 commit ba750f4

File tree

1 file changed

+4
-9
lines changed

1 file changed

+4
-9
lines changed

src/mon/OSDMonitor.cc

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -906,12 +906,7 @@ void OSDMonitor::update_from_paxos(bool *need_bootstrap)
906906
if (state & CEPH_OSD_UP) {
907907
// could be marked up *or* down, but we're too lazy to check which
908908
last_osd_report.erase(osd);
909-
}
910-
}
911-
for (auto [osd, weight] : inc.new_weight) {
912-
if (weight == CEPH_OSD_OUT) {
913-
// manually marked out, so drop it
914-
osd_epochs.erase(osd);
909+
osd_epochs.erase(osd);
915910
}
916911
}
917912
}
@@ -2292,6 +2287,7 @@ epoch_t OSDMonitor::get_min_last_epoch_clean() const
22922287
// don't trim past the oldest reported osd epoch
22932288
for (auto [osd, epoch] : osd_epochs) {
22942289
if (epoch < floor) {
2290+
ceph_assert(osdmap.is_up(osd));
22952291
floor = epoch;
22962292
}
22972293
}
@@ -4399,9 +4395,8 @@ bool OSDMonitor::prepare_beacon(MonOpRequestRef op)
43994395

44004396
last_osd_report[from].first = ceph_clock_now();
44014397
last_osd_report[from].second = beacon->osd_beacon_report_interval;
4402-
if (osdmap.is_in(from)) {
4403-
osd_epochs[from] = beacon->version;
4404-
}
4398+
ceph_assert(osdmap.is_up(from));
4399+
osd_epochs[from] = beacon->version;
44054400
for (const auto& pg : beacon->pgs) {
44064401
if (auto* pool = osdmap.get_pg_pool(pg.pool()); pool != nullptr) {
44074402
unsigned pg_num = pool->get_pg_num();

0 commit comments

Comments
 (0)