return out;
}
-bool OSD::_have_pg(spg_t pgid)
-{
- RWLock::RLocker l(pg_map_lock);
- return pg_map.count(pgid);
-}
-
PG *OSD::_lookup_lock_pg(spg_t pgid)
{
RWLock::RLocker l(pg_map_lock);
return;
}
- if (!_have_pg(pgid)) {
+ PG *pg = _lookup_lock_pg(pgid);
+ if (!pg) {
// same primary?
if (!osdmap->have_pg_pool(pgid.pool()))
return;
if (!pp->is_replicated() && role != pgid.shard)
role = -1;
- PG *pg = _create_lock_pg(
+ pg = _create_lock_pg(
get_map(epoch),
pgid, false, false,
role,
pg_history_t old_history = old_pg_state->info.history;
pg_interval_map_t old_past_intervals = old_pg_state->past_intervals;
old_pg_state->unlock();
- PG *pg = _create_lock_pg(
+ pg = _create_lock_pg(
old_osd_map,
resurrected,
false,
}
} else {
// already had it. did the mapping change?
- PG *pg = _lookup_lock_pg(pgid);
if (epoch < pg->info.history.same_interval_since) {
dout(10) << *pg << " get_or_create_pg acting changed in "
<< pg->info.history.same_interval_since
r = -EINVAL;
} else {
spg_t pcand;
+ PG *pg = nullptr;
if (osdmap->get_primary_shard(pgid, &pcand) &&
- _have_pg(pcand)) {
- PG *pg = _lookup_lock_pg(pcand);
- assert(pg);
+ (pg = _lookup_lock_pg(pcand))) {
if (pg->is_primary()) {
// simulate pg <pgid> cmd= for pg->do-command
if (prefix != "pg")
PGPool _get_pool(int id, OSDMapRef createmap);
PG *get_pg_or_queue_for_pg(const spg_t& pgid, OpRequestRef& op);
- bool _have_pg(spg_t pgid);
PG *_lookup_lock_pg_with_map_lock_held(spg_t pgid);
PG *_lookup_lock_pg(spg_t pgid);
PG *_open_lock_pg(OSDMapRef createmap,