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_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)
OPTION(osd_scrub_thread_timeout, OPT_INT, 60)
void OSD::do_recovery(PG *pg, ThreadPool::TPHandle &handle)
{
+ if (g_conf->osd_recovery_sleep > 0) {
+ utime_t t;
+ t.set_from_double(g_conf->osd_recovery_sleep);
+ t.sleep();
+ dout(20) << __func__ << " slept for " << t << dendl;
+ }
+
// see how many we should try to start. note that this is a bit racy.
recovery_wq.lock();
int max = MIN(cct->_conf->osd_recovery_max_active - recovery_ops_active,