From c8be0f7129d7928f3ff0c3f518405ed617ab2ca7 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 29 Apr 2016 15:47:16 -0400 Subject: [PATCH] osd: respect shard when setting role on new pgs This matches PG::start_peering_interval(). Signed-off-by: Sage Weil --- src/osd/OSD.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 8b905bf199d49..77acdc9e74ee1 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -3444,7 +3444,6 @@ void OSD::handle_pg_peering_evt( vector up, acting; osdmap->pg_to_up_acting_osds( pgid.pgid, &up, &up_primary, &acting, &acting_primary); - int role = osdmap->calc_pg_role(whoami, acting, acting.size()); pg_history_t history = orig_history; bool valid_history = project_pg_history( @@ -3477,6 +3476,10 @@ void OSD::handle_pg_peering_evt( PG::_create(*rctx.transaction, pgid, pgid.get_split_bits(pp->get_pg_num())); PG::_init(*rctx.transaction, pgid, pp); + int role = osdmap->calc_pg_role(whoami, acting, acting.size()); + if (!pp->is_replicated() && role != pgid.shard) + role = -1; + PG *pg = _create_lock_pg( get_map(epoch), pgid, false, false, -- 2.39.5