]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: don't scrub something we just scrubbed
authorSage Weil <sage@newdream.net>
Wed, 10 Nov 2010 23:43:37 +0000 (15:43 -0800)
committerSage Weil <sage@newdream.net>
Thu, 11 Nov 2010 00:31:42 +0000 (16:31 -0800)
Signed-off-by: Sage Weil <sage@newdream.net>
src/config.cc
src/config.h
src/osd/PG.cc

index d9d92dc045906d99432ce7c4839ad411123ceb56..34bbc2b784dcf1070368b1420fa71d10404a9c00 100644 (file)
@@ -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
index d3ea07d1717dab50d80631ec703aef0e9aeea51a..9c8a48efc070572923d5d6dd3e6ecfb2942595a0 100644 (file)
@@ -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
 
index 2c4de35f7867f5ec94510eacaf8a3614dd6cb219..034ec705aabd362424e905439870b1e96f0752fa 100644 (file)
@@ -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());