]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/ReplicatedBackend: reset thread heartbeat after every omap entry in deep-scrub 15823/head
authorJosh Durgin <jdurgin@redhat.com>
Wed, 21 Jun 2017 22:05:49 +0000 (15:05 -0700)
committerJosh Durgin <jdurgin@redhat.com>
Wed, 21 Jun 2017 22:05:49 +0000 (15:05 -0700)
Doing this every 100 entries could be after 100MB of reads. There's
little cost to reset this, so remove the option for configuring it.

This reduces the likelihood of crashing the osd due to too many omap
values on an object.

Fixes: http://tracker.ceph.com/issues/20375
Signed-off-by: Josh Durgin <jdurgin@redhat.com>
src/common/config_opts.h
src/osd/ReplicatedBackend.cc

index 443ef8c1a8719afd17a6b6ad3e4c76b5d14a4dc0..8fc0458cef0199d9f8d8b93d15492576a5bab5aa 100644 (file)
@@ -853,7 +853,6 @@ OPTION(osd_deep_scrub_interval, OPT_FLOAT, 60*60*24*7) // once a week
 OPTION(osd_deep_scrub_randomize_ratio, OPT_FLOAT, 0.15) // scrubs will randomly become deep scrubs at this rate (0.15 -> 15% of scrubs are deep)
 OPTION(osd_deep_scrub_stride, OPT_INT, 524288)
 OPTION(osd_deep_scrub_update_digest_min_age, OPT_INT, 2*60*60)   // objects must be this old (seconds) before we update the whole-object digest on scrub
-OPTION(osd_scan_list_ping_tp_interval, OPT_U64, 100)
 OPTION(osd_class_dir, OPT_STR, CEPH_LIBDIR "/rados-classes") // where rados plugins are stored
 OPTION(osd_open_classes_on_start, OPT_BOOL, true)
 OPTION(osd_class_load_list, OPT_STR, "cephfs hello journal lock log numops "
index 07c0d316cf6d1e69dc8c0e29e0e273ef4416d2ad..0bd0ab8dd2ab0efd584fe814adff6c12ab5d3c50 100644 (file)
@@ -770,14 +770,9 @@ void ReplicatedBackend::be_deep_scrub(
     ghobject_t(
       poid, ghobject_t::NO_GEN, get_parent()->whoami_shard().shard));
   assert(iter);
-  uint64_t keys_scanned = 0;
   for (iter->seek_to_first(); iter->status() == 0 && iter->valid();
     iter->next(false)) {
-    if (cct->_conf->osd_scan_list_ping_tp_interval &&
-       (keys_scanned % cct->_conf->osd_scan_list_ping_tp_interval == 0)) {
-      handle.reset_tp_timeout();
-    }
-    ++keys_scanned;
+    handle.reset_tp_timeout();
 
     dout(25) << "CRC key " << iter->key() << " value:\n";
     iter->value().hexdump(*_dout);