return 0;
}
+ epoch_t max_oldest_stored_osdmap() final {
+ // TODO
+ return 0;
+ }
+
void on_backfill_reserved() final {
recovery_handler->on_backfill_reserved();
}
return osd->get_superblock().oldest_map;
}
+epoch_t PG::max_oldest_stored_osdmap() {
+ return osd->get_superblock().max_oldest_map;
+}
+
OstreamTemp PG::get_clog_info() {
return osd->clog->info();
}
void clear_primary_state() override;
epoch_t oldest_stored_osdmap() override;
+ epoch_t max_oldest_stored_osdmap() override;
OstreamTemp get_clog_error() override;
OstreamTemp get_clog_info() override;
OstreamTemp get_clog_debug() override;
void PeeringState::check_past_interval_bounds() const
{
- auto oldest_epoch = pl->oldest_stored_osdmap();
+ // a specific OSD's oldest_map can lag for a while, therfore
+ // use the maximum MOSDMap.oldest_map received with peers.
+ auto oldest_epoch = pl->max_oldest_stored_osdmap();
auto rpib = get_required_past_interval_bounds(
info,
oldest_epoch);
virtual void on_active_actmap() = 0;
virtual void on_active_advmap(const OSDMapRef &osdmap) = 0;
virtual epoch_t oldest_stored_osdmap() = 0;
+ virtual epoch_t max_oldest_stored_osdmap() = 0;
// ============ recovery reservation notifications ==========
virtual void on_backfill_reserved() = 0;