mirror of
https://github.com/ceph/ceph
synced 2025-02-24 03:27:10 +00:00
osd/scrub: fix the handling of deep-scrub when noscrub is set
Recent scrub scheduling code errs in (at one location) incorrectly considering noscrub as not precluding deep-scrub. Fixes: https://tracker.ceph.com/issues/52901 Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
This commit is contained in:
parent
6e8bc71508
commit
c2f954b92e
@ -1485,15 +1485,20 @@ bool PG::verify_periodic_scrub_mode(bool allow_deep_scrub,
|
||||
|
||||
std::optional<requested_scrub_t> PG::verify_scrub_mode() const
|
||||
{
|
||||
dout(10) << __func__ << " processing pg " << info.pgid << dendl;
|
||||
|
||||
bool allow_deep_scrub = !(get_osdmap()->test_flag(CEPH_OSDMAP_NODEEP_SCRUB) ||
|
||||
pool.info.has_flag(pg_pool_t::FLAG_NODEEP_SCRUB));
|
||||
bool allow_regular_scrub = !(get_osdmap()->test_flag(CEPH_OSDMAP_NOSCRUB) ||
|
||||
pool.info.has_flag(pg_pool_t::FLAG_NOSCRUB));
|
||||
pool.info.has_flag(pg_pool_t::FLAG_NOSCRUB));
|
||||
bool allow_deep_scrub = allow_regular_scrub &&
|
||||
!(get_osdmap()->test_flag(CEPH_OSDMAP_NODEEP_SCRUB) ||
|
||||
pool.info.has_flag(pg_pool_t::FLAG_NODEEP_SCRUB));
|
||||
bool has_deep_errors = (info.stats.stats.sum.num_deep_scrub_errors > 0);
|
||||
bool try_to_auto_repair =
|
||||
(cct->_conf->osd_scrub_auto_repair && get_pgbackend()->auto_repair_supported());
|
||||
bool try_to_auto_repair = (cct->_conf->osd_scrub_auto_repair &&
|
||||
get_pgbackend()->auto_repair_supported());
|
||||
|
||||
dout(10) << __func__ << " pg: " << info.pgid
|
||||
<< " allow: " << allow_regular_scrub << "/" << allow_deep_scrub
|
||||
<< " deep errs: " << has_deep_errors
|
||||
<< " auto-repair: " << try_to_auto_repair << " ("
|
||||
<< cct->_conf->osd_scrub_auto_repair << ")" << dendl;
|
||||
|
||||
auto upd_flags = m_planned_scrub;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user