From: Sage Weil Date: Thu, 6 Mar 2014 19:13:35 +0000 (-0800) Subject: osd: bracket role changes with scrub reg/unreg X-Git-Tag: v0.79~121^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d379b1f168556c61ddd47a3e45f37943ffb0dc21;p=ceph.git osd: bracket role changes with scrub reg/unreg Make sure the reg/unreg calls for putting ourselves in the scrub schedule bracket any PG role changes, or that initial reg happens after the role has been initialized. Signed-off-by: Sage Weil --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index f229bc08503..71e95d79bca 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -2103,8 +2103,6 @@ void OSD::load_pgs() service.init_splits_between(pg->info.pgid, pg->get_osdmap(), osdmap); - pg->reg_next_scrub(); - // generate state for PG's current mapping int primary, up_primary; vector acting, up; @@ -2118,6 +2116,8 @@ void OSD::load_pgs() int role = OSDMap::calc_pg_role(whoami, pg->acting); pg->set_role(role); + pg->reg_next_scrub(); + PG::RecoveryCtx rctx(0, 0, 0, 0, 0, 0); pg->handle_loaded(&rctx); diff --git a/src/osd/PG.cc b/src/osd/PG.cc index fe759efe142..3537ce576ac 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -4640,6 +4640,8 @@ void PG::start_peering_interval( vector oldacting, oldup; int oldrole = get_role(); + unreg_next_scrub(); + pg_shard_t old_acting_primary = get_primary(); pg_shard_t old_up_primary = up_primary; bool was_old_primary = is_primary(); @@ -4676,6 +4678,8 @@ void PG::start_peering_interval( else set_role(-1); + reg_next_scrub(); + // did acting, up, primary|acker change? if (!lastmap) { dout(10) << " no lastmap" << dendl;