]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
osd: fix arithmetic exception when scrub_min_interval is small
authorMykola Golub <mgolub@mirantis.com>
Mon, 7 Dec 2015 06:53:23 +0000 (08:53 +0200)
committerMykola Golub <mgolub@mirantis.com>
Mon, 7 Dec 2015 18:41:16 +0000 (20:41 +0200)
Signed-off-by: Mykola Golub <mgolub@mirantis.com>
src/osd/OSD.cc

index 7425cc7e6b6e284aa6c6d66af8b4625d3181b7f4..766dedfb9e536595dea4225d6d24aaec4e65ae81 100644 (file)
@@ -6088,9 +6088,10 @@ OSDService::ScrubJob::ScrubJob(const spg_t& pg, const utime_t& timestamp,
       pool_scrub_max_interval : g_conf->osd_scrub_max_interval;
 
     sched_time += scrub_min_interval;
-    if (g_conf->osd_scrub_interval_randomize_ratio > 0) {
-      sched_time += rand() % (int)(scrub_min_interval *
-                                  g_conf->osd_scrub_interval_randomize_ratio);
+    int divisor = scrub_min_interval *
+      g_conf->osd_scrub_interval_randomize_ratio;
+    if (divisor > 0) {
+      sched_time += rand() % divisor;
     }
     deadline += scrub_max_interval;
   }