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

Fixes: http://tracker.ceph.com/issues/16474
Signed-off-by: David Zafman <dzafman@redhat.com>
src/osd/OSD.cc
src/osd/PG.cc

index 09924c9a5ab1585eb391b29ad5bcf94cd62b79a0..8a55a0f652079fd1df2ac74515eac0672c679d13 100644 (file)
@@ -3042,7 +3042,6 @@ void OSD::add_newly_split_pg(PG *pg, PG::RecoveryCtx *rctx)
   service.pg_add_epoch(pg->info.pgid, pg->get_osdmap()->get_epoch());
 
   dout(10) << "Adding newly split pg " << *pg << dendl;
-  pg->reg_next_scrub();
   pg->handle_loaded(rctx);
   pg->write_if_dirty(*(rctx->transaction));
   pg->queue_null(e, e);
index c1e2764948d308461bdc98e31415a0e8b1986114..12e7df62040931eba8d327f5bff9e824d06e206f 100644 (file)
@@ -3411,6 +3411,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,
@@ -3420,8 +3421,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)