]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
PG: ping tphandle during omap loop as well
authorSamuel Just <sam.just@inktank.com>
Fri, 24 May 2013 00:40:44 +0000 (17:40 -0700)
committerSamuel Just <sam.just@inktank.com>
Fri, 24 May 2013 00:41:54 +0000 (17:41 -0700)
Signed-off-by: Samuel Just <sam.just@inktank.com>
src/common/config_opts.h
src/osd/PG.cc

index 34e2cabd8d00d7fc94dbd11a661e3e4512256dcb..d2a9c49d5ac2a602a8d1ee70b275c1226e771407 100644 (file)
@@ -354,6 +354,7 @@ OPTION(osd_scrub_min_interval, OPT_FLOAT, 60*60*24)    // if load is low
 OPTION(osd_scrub_max_interval, OPT_FLOAT, 7*60*60*24)  // regardless of load
 OPTION(osd_deep_scrub_interval, OPT_FLOAT, 60*60*24*7) // once a week
 OPTION(osd_deep_scrub_stride, OPT_INT, 524288)
+OPTION(osd_scan_list_ping_tp_interval, OPT_U64, 100)
 OPTION(osd_auto_weight, OPT_BOOL, false)
 OPTION(osd_class_dir, OPT_STR, CEPH_LIBDIR "/rados-classes") // where rados plugins are stored
 OPTION(osd_check_for_log_corruption, OPT_BOOL, false)
index c8a9a17e6db8853fa7e1d2a0a70c57a05e449f28..e4297e20e3d49ca52b9f767d2e085dc015ef6ec5 100644 (file)
@@ -3200,7 +3200,14 @@ void PG::_scan_list(
         ObjectMap::ObjectMapIterator iter = osd->store->get_omap_iterator(
           coll, poid);
         assert(iter);
+       uint64_t keys_scanned = 0;
         for (iter->seek_to_first(); iter->valid() ; iter->next()) {
+         if (g_conf->osd_scan_list_ping_tp_interval &&
+             (keys_scanned % g_conf->osd_scan_list_ping_tp_interval == 0)) {
+           handle.reset_tp_timeout();
+         }
+         ++keys_scanned;
+
           dout(25) << "CRC key " << iter->key() << " value "
             << string(iter->value().c_str(), iter->value().length()) << dendl;