]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: cleanup: Use the specific sched_time to see if scrub user requested
authorDavid Zafman <dzafman@redhat.com>
Thu, 13 Jun 2019 02:33:49 +0000 (19:33 -0700)
committerDavid Zafman <dzafman@redhat.com>
Thu, 13 Jun 2019 02:35:23 +0000 (19:35 -0700)
Replace bool scrub_registered with check of scrub_reg_stamp

Signed-off-by: David Zafman <dzafman@redhat.com>
src/osd/OSD.h
src/osd/PG.cc
src/osd/PG.h

index b2a9df58e8e4653e98d7f0b87356eec74a9786cb..24d11b9daedfc72c4523c0fea0370aca8126c0b7 100644 (file)
@@ -343,7 +343,7 @@ public:
       f->dump_stream("pgid") << i.pgid;
       f->dump_stream("sched_time") << i.sched_time;
       f->dump_stream("deadline") << i.deadline;
-      f->dump_bool("forced", i.sched_time == i.deadline);
+      f->dump_bool("forced", i.sched_time == PG::Scrubber::scrub_must_stamp());
       f->close_section();
     }
     f->close_section();
index aa26a1863606461df9249349d342f69eca9a5cd4..1bac86d79d503a93fa269c7ac86cb802b4abdac4 100644 (file)
@@ -1442,6 +1442,11 @@ bool PG::sched_scrub()
   return ret;
 }
 
+bool PG::is_scrub_registered()
+{
+  return !scrubber.scrub_reg_stamp.is_zero();
+}
+
 void PG::reg_next_scrub()
 {
   if (!is_primary())
@@ -1451,7 +1456,7 @@ void PG::reg_next_scrub()
   bool must = false;
   if (scrubber.must_scrub) {
     // Set the smallest time that isn't utime_t()
-    reg_stamp = utime_t(0,1);
+    reg_stamp = Scrubber::scrub_must_stamp();
     must = true;
   } else if (info.stats.stats_invalid && cct->_conf->osd_scrub_invalid_stats) {
     reg_stamp = ceph_clock_now();
@@ -1464,7 +1469,7 @@ void PG::reg_next_scrub()
   double scrub_min_interval = 0, scrub_max_interval = 0;
   pool.info.opts.get(pool_opts_t::SCRUB_MIN_INTERVAL, &scrub_min_interval);
   pool.info.opts.get(pool_opts_t::SCRUB_MAX_INTERVAL, &scrub_max_interval);
-  ceph_assert(scrubber.scrub_reg_stamp == utime_t());
+  ceph_assert(!is_scrub_registered());
   scrubber.scrub_reg_stamp = osd->reg_pg_scrub(info.pgid,
                                               reg_stamp,
                                               scrub_min_interval,
@@ -1472,15 +1477,13 @@ void PG::reg_next_scrub()
                                               must);
   dout(10) << __func__ << " pg " << pg_id << " register next scrub, scrub time "
       << scrubber.scrub_reg_stamp << ", must = " << (int)must << dendl;
-  scrub_registered = true;
 }
 
 void PG::unreg_next_scrub()
 {
-  if (scrub_registered) {
+  if (is_scrub_registered()) {
     osd->unreg_pg_scrub(info.pgid, scrubber.scrub_reg_stamp);
     scrubber.scrub_reg_stamp = utime_t();
-    scrub_registered = false;
   }
 }
 
index 1b425525b86c05ec8b6b7ec324184e210dc03ec1..76ec494a860637a0628c8c8abbd605af573f88bf 100644 (file)
@@ -383,6 +383,7 @@ public:
 
   void scrub(epoch_t queued, ThreadPool::TPHandle &handle);
 
+  bool is_scrub_registered();
   void reg_next_scrub();
   void unreg_next_scrub();
 
@@ -657,7 +658,6 @@ protected:
   /* You should not use these items without taking their respective queue locks
    * (if they have one) */
   xlist<PG*>::item stat_queue_item;
-  bool scrub_registered = false;
   bool scrub_queued;
   bool recovery_queued;
 
@@ -1103,6 +1103,8 @@ public:
     OpRequestRef active_rep_scrub;
     utime_t scrub_reg_stamp;  // stamp we registered for
 
+    static utime_t scrub_must_stamp() { return utime_t(0,1); }
+
     omap_stat_t omap_stats  = (const struct omap_stat_t){ 0 };
 
     // For async sleep