allow new scrub session to be initiated by an OSD even while a PG is
in the process of reserving scrub resources.
The existing restriction made sense when the replica reservation process
was expected to succeed or fail within a few milliseconds. It makes less
sense now that the reservation process is queue-based (Reserver based)
and can take unlimited time (hours, days, ...) to complete.
Fixes: https://tracker.ceph.com/issues/66351
Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
<< dendl;
env_conditions.high_priority_only = true;
- } else if (m_queue.is_reserving_now()) {
- // if there is a PG that is just now trying to reserve scrub replica
- // resources - we should wait and not initiate a new scrub
- dout(10) << "scrub resources reservation in progress" << dendl;
- env_conditions.high_priority_only = true;
-
} else if (is_recovery_active && !conf->osd_scrub_during_recovery) {
if (conf->osd_repair_during_recovery) {
dout(15)
}
// otherwise - ignore silently
}
-
-bool ScrubQueue::is_reserving_now() const
-{
- // no lock needed, as set_reserving_now() will recheck
- return reserving_pg.has_value();
-}