From: Samuel Just Date: Wed, 6 May 2015 17:50:19 +0000 (-0700) Subject: OSD: add recovery_wq suicide timeout X-Git-Tag: v9.0.2~188^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=85311b656852af75bfbbc6699f92fc6aa233c316;p=ceph.git OSD: add recovery_wq suicide timeout Signed-off-by: Samuel Just --- diff --git a/src/common/config_opts.h b/src/common/config_opts.h index 1183df72e3e..0bb6db68524 100644 --- a/src/common/config_opts.h +++ b/src/common/config_opts.h @@ -584,6 +584,7 @@ OPTION(osd_backfill_scan_min, OPT_INT, 64) OPTION(osd_backfill_scan_max, OPT_INT, 512) OPTION(osd_op_thread_timeout, OPT_INT, 15) OPTION(osd_recovery_thread_timeout, OPT_INT, 30) +OPTION(osd_recovery_thread_suicide_timeout, OPT_INT, 300) OPTION(osd_recovery_sleep, OPT_FLOAT, 0) // seconds to sleep between recovery ops OPTION(osd_snap_trim_thread_timeout, OPT_INT, 60*60*1) OPTION(osd_snap_trim_sleep, OPT_FLOAT, 0) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index b6e04023a99..4b8281c80f0 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -1521,7 +1521,11 @@ OSD::OSD(CephContext *cct_, ObjectStore *store_, cct->_conf->osd_command_thread_suicide_timeout, &command_tp), recovery_ops_active(0), - recovery_wq(this, cct->_conf->osd_recovery_thread_timeout, &recovery_tp), + recovery_wq( + this, + cct->_conf->osd_recovery_thread_timeout, + cct->_conf->osd_recovery_thread_suicide_timeout, + &recovery_tp), replay_queue_lock("OSD::replay_queue_lock"), snap_trim_wq(this, cct->_conf->osd_snap_trim_thread_timeout, &disk_tp), scrub_wq(this, cct->_conf->osd_scrub_thread_timeout, &disk_tp), diff --git a/src/osd/OSD.h b/src/osd/OSD.h index b90a0c9cb31..b492ce58b5a 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -2023,8 +2023,8 @@ protected: struct RecoveryWQ : public ThreadPool::WorkQueue { OSD *osd; - RecoveryWQ(OSD *o, time_t ti, ThreadPool *tp) - : ThreadPool::WorkQueue("OSD::RecoveryWQ", ti, ti*10, tp), osd(o) {} + RecoveryWQ(OSD *o, time_t ti, time_t si, ThreadPool *tp) + : ThreadPool::WorkQueue("OSD::RecoveryWQ", ti, si, tp), osd(o) {} bool _empty() { return osd->recovery_queue.empty();