startmap->pg_to_up_acting_osds(
info->pgid.pgid, &up, &up_primary, &acting, &acting_primary);
- int role = startmap->calc_pg_role(whoami, acting, acting.size());
- if (!pp->is_replicated() && role != info->pgid.shard) {
- role = -1;
- }
-
+ int role = startmap->calc_pg_role(pg_shard_t(whoami, info->pgid.shard),
+ acting);
create_pg_collection(
rctx.transaction,
acting,
up_primary,
primary);
- int rr = OSDMap::calc_pg_role(pg_whoami.osd, acting);
- if (peering_state.get_pool().info.is_replicated() || rr == pg_whoami.shard)
- peering_state.set_role(rr);
- else
- peering_state.set_role(-1);
+ int rr = OSDMap::calc_pg_role(pg_whoami, acting);
+ peering_state.set_role(rr);
epoch_t epoch = get_osdmap_epoch();
shard_services.start_operation<LocalPeeringEvent>(
rctx.transaction, pgid, pgid.get_split_bits(pp->get_pg_num()));
init_pg_ondisk(rctx.transaction, pgid, pp);
- int role = startmap->calc_pg_role(whoami, acting, acting.size());
- if (!pp->is_replicated() && role != pgid.shard) {
- role = -1;
- }
+ int role = startmap->calc_pg_role(pg_shard_t(whoami, pgid.shard), acting);
PGRef pg = _make_pg(startmap, pgid);
pg->ch = store->create_new_collection(pg->coll);
dout(20) << "mkpg " << on << " e" << created << "@" << ci->second << dendl;
+ spg_t pgid;
+ bool mapped = osdmap->get_primary_shard(on, &pgid);
+ ceph_assert(mapped);
+
// is it still ours?
vector<int> up, acting;
int up_primary = -1;
int acting_primary = -1;
osdmap->pg_to_up_acting_osds(on, &up, &up_primary, &acting, &acting_primary);
- int role = osdmap->calc_pg_role(whoami, acting, acting.size());
+ int role = osdmap->calc_pg_role(pg_shard_t(whoami, pgid.shard), acting);
if (acting_primary != whoami) {
dout(10) << "mkpg " << on << " not acting_primary (" << acting_primary
continue;
}
- spg_t pgid;
- bool mapped = osdmap->get_primary_shard(on, &pgid);
- ceph_assert(mapped);
PastIntervals pi;
pg_history_t history;
acting,
up_primary,
primary);
- int rr = OSDMap::calc_pg_role(osd->whoami, acting);
- if (pool.info.is_replicated() || rr == pg_whoami.shard)
- recovery_state.set_role(rr);
- else
- recovery_state.set_role(-1);
+ recovery_state.set_role(OSDMap::calc_pg_role(pg_whoami, acting));
}
// init pool options
else
state_clear(PG_STATE_REMAPPED);
- int role = osdmap->calc_pg_role(pg_whoami.osd, acting, acting.size());
- if (pool.info.is_replicated() || role == pg_whoami.shard)
- set_role(role);
- else
- set_role(-1);
+ int role = osdmap->calc_pg_role(pg_whoami, acting);
+ set_role(role);
// did acting, up, primary|acker change?
if (!lastmap) {
newacting,
up_primary,
primary);
- child->role = OSDMap::calc_pg_role(pg_whoami.osd, child->acting);
+ child->role = OSDMap::calc_pg_role(pg_whoami, child->acting);
// this comparison includes primary rank via pg_shard_t
if (get_primary() != child->get_primary())