From: David Zafman Date: Fri, 7 Jun 2019 03:32:40 +0000 (+0000) Subject: osd: Don't randomize deep scrubs when noscrub set X-Git-Tag: v15.1.0~2498^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=974e374eb33b211e9630e1bc572da8fb50a806c9;p=ceph-ci.git osd: Don't randomize deep scrubs when noscrub set Fixes: http://tracker.ceph.com/issues/40198 Signed-off-by: David Zafman --- diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 4a1d5fc79df..aa26a186360 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -1334,7 +1334,11 @@ bool PG::sched_scrub() bool deep_coin_flip = false; // Only add random deep scrubs when NOT user initiated scrub - if (!scrubber.must_scrub) + // If we randomize when noscrub set then it guarantees + // we will deep scrub because this function is called often. + if (!time_for_deep && !scrubber.must_scrub + && !(get_osdmap()->test_flag(CEPH_OSDMAP_NOSCRUB) + || pool.info.has_flag(pg_pool_t::FLAG_NOSCRUB))) deep_coin_flip = (rand() % 100) < cct->_conf->osd_deep_scrub_randomize_ratio * 100; dout(20) << __func__ << ": time_for_deep=" << time_for_deep << " deep_coin_flip=" << deep_coin_flip << dendl;