]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: Remove extra call to reg_next_scrub() during splits 11606/head
authorDavid Zafman <dzafman@redhat.com>
Thu, 22 Sep 2016 21:15:13 +0000 (14:15 -0700)
committerDavid Zafman <dzafman@redhat.com>
Sat, 22 Oct 2016 01:18:18 +0000 (18:18 -0700)
Add assert() to catch this in the future

Fixes: http://tracker.ceph.com/issues/16474
Signed-off-by: David Zafman <dzafman@redhat.com>
(cherry picked from commit 9e43346a0df062d618fa5710564e30db3ca9e5a5)

Conflicts:
src/osd/OSD.cc (trivial)

src/osd/OSD.cc
src/osd/PG.cc

index 6b503a50b60d168442aa42e1f602e90217902cd0..8bbe6d365ff2f019d30316b80d5d8f70dfabdb8a 100644 (file)
@@ -2939,7 +2939,6 @@ void OSD::add_newly_split_pg(PG *pg, PG::RecoveryCtx *rctx)
   pg->get_osdmap()->pg_to_up_acting_osds(pg->info.pgid.pgid, up, acting);
   int role = OSDMap::calc_pg_role(service.whoami, acting);
   pg->set_role(role);
-  pg->reg_next_scrub();
   pg->handle_loaded(rctx);
   pg->write_if_dirty(*(rctx->transaction));
   pg->queue_null(e, e);
index 39b5bf8b652c7c2ee5108d2b9678d290004a0b86..7313bde02dcd2a419a643fcf170f40f4a699a0d9 100644 (file)
@@ -3428,6 +3428,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);
+  assert(scrubber.scrub_reg_stamp == utime_t());
   scrubber.scrub_reg_stamp = osd->reg_pg_scrub(info.pgid,
                                               reg_stamp,
                                               scrub_min_interval,
@@ -3437,8 +3438,10 @@ void PG::reg_next_scrub()
 
 void PG::unreg_next_scrub()
 {
-  if (is_primary())
+  if (is_primary()) {
     osd->unreg_pg_scrub(info.pgid, scrubber.scrub_reg_stamp);
+    scrubber.scrub_reg_stamp = utime_t();
+  }
 }
 
 void PG::sub_op_scrub_map(OpRequestRef op)