]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: Don't randomize deep scrubs when noscrub set 28768/head
authorDavid Zafman <dzafman@redhat.com>
Fri, 7 Jun 2019 03:32:40 +0000 (03:32 +0000)
committerDavid Zafman <dzafman@redhat.com>
Thu, 27 Jun 2019 16:54:12 +0000 (09:54 -0700)
Fixes: http://tracker.ceph.com/issues/40198
Signed-off-by: David Zafman <dzafman@redhat.com>
(cherry picked from commit 974e374eb33b211e9630e1bc572da8fb50a806c9)

src/osd/PG.cc

index e54827611cadeff277d69de62feaf85e8dbf77c8..7d762961489120530f888bc8b01c35e67d356665 100644 (file)
@@ -4367,7 +4367,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;