From c12829a2e7a5ae4df91cc3cd76a4f01ab8416c2a Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 10 Nov 2010 15:43:37 -0800 Subject: [PATCH] osd: don't scrub something we just scrubbed Signed-off-by: Sage Weil --- src/config.cc | 2 ++ src/config.h | 2 ++ src/osd/PG.cc | 6 ++++++ 3 files changed, 10 insertions(+) diff --git a/src/config.cc b/src/config.cc index d9d92dc045906..34bbc2b784dcf 100644 --- a/src/config.cc +++ b/src/config.cc @@ -539,6 +539,8 @@ static struct config_option config_optionsp[] = { OPTION(osd_recovery_forget_lost_objects, 0, OPT_BOOL, false), // off for now OPTION(osd_max_scrubs, 0, OPT_INT, 1), OPTION(osd_scrub_load_threshold, 0, OPT_FLOAT, 0.5), + OPTION(osd_scrub_min_interval, 0, OPT_FLOAT, 300), + OPTION(osd_scrub_max_interval, 0, OPT_FLOAT, 60*60*24*7*4), // 4 weeks OPTION(osd_auto_weight, 0, OPT_BOOL, false), OPTION(osd_class_error_timeout, 0, OPT_DOUBLE, 60.0), // seconds OPTION(osd_class_timeout, 0, OPT_DOUBLE, 60*60.0), // seconds diff --git a/src/config.h b/src/config.h index d3ea07d1717da..9c8a48efc0705 100644 --- a/src/config.h +++ b/src/config.h @@ -390,6 +390,8 @@ struct md_config_t { int osd_max_scrubs; float osd_scrub_load_threshold; + float osd_scrub_min_interval; + float osd_scrub_max_interval; bool osd_check_for_log_corruption; // bleh diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 2c4de35f7867f..034ec705aabd3 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -2573,6 +2573,12 @@ bool PG::sched_scrub() return true; } + // just scrubbed? + if (info.history.last_scrub_stamp + g_conf.osd_scrub_min_interval > g_clock.now()) { + dout(20) << "sched_scrub: just scrubbed, skipping" << dendl; + return true; + } + bool ret = false; if (!scrub_reserved) { assert(scrub_reserved_peers.empty()); -- 2.39.5