summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Just <sam.just@inktank.com>2013-05-23 17:40:44 -0700
committerSamuel Just <sam.just@inktank.com>2013-05-23 19:42:32 -0700
commit86822485e518d61d7b2c02a6ff25eb2c4b4bc307 (patch)
treeeba98c7276e19174838f33d8af78753fd28f9737
parentd62716dd4ceb29032759bf84e864d214fe38a17c (diff)
downloadceph-86822485e518d61d7b2c02a6ff25eb2c4b4bc307.tar.gz
PG: ping tphandle during omap loop as well
Signed-off-by: Samuel Just <sam.just@inktank.com>
-rw-r--r--src/common/config_opts.h1
-rw-r--r--src/osd/PG.cc7
2 files changed, 8 insertions, 0 deletions
diff --git a/src/common/config_opts.h b/src/common/config_opts.h
index 02ceda5703e..6fc6c015971 100644
--- a/src/common/config_opts.h
+++ b/src/common/config_opts.h
@@ -416,6 +416,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)
diff --git a/src/osd/PG.cc b/src/osd/PG.cc
index 6e8079dae5a..3575cece695 100644
--- a/src/osd/PG.cc
+++ b/src/osd/PG.cc
@@ -3308,7 +3308,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;