return p->second->pg;
}
-PG *OSD::_lookup_lock_pg(spg_t pgid)
+PGRef OSD::_lookup_lock_pg(spg_t pgid)
{
PGRef pg = _lookup_pg(pgid);
if (!pg) {
}
pg->lock();
if (!pg->is_deleted()) {
- return pg.get();
+ return pg;
}
pg->unlock();
return nullptr;
}
-PG *OSD::lookup_lock_pg(spg_t pgid)
+PGRef OSD::lookup_lock_pg(spg_t pgid)
{
return _lookup_lock_pg(pgid);
}
return;
}
- PG *pg = service->osd->_lookup_lock_pg(pgid);
+ PGRef pg = service->osd->_lookup_lock_pg(pgid);
if (pg == nullptr) {
ss << "Can't find pg " << pgid;
return;
r = -EINVAL;
} else {
spg_t pcand;
- PG *pg = nullptr;
+ PGRef pg;
if (osdmap->get_primary_shard(pgid, &pcand) &&
(pg = _lookup_lock_pg(pcand))) {
if (pg->is_primary()) {
continue;
}
- PG *pg = _lookup_lock_pg(scrub.pgid);
+ PGRef pg = _lookup_lock_pg(scrub.pgid);
if (!pg)
continue;
dout(10) << "sched_scrub scrubbing " << scrub.pgid << " at " << scrub.sched_time
PGRecoveryStats pg_recovery_stats;
PGRef _lookup_pg(spg_t pgid);
- PG *_lookup_lock_pg(spg_t pgid);
+ PGRef _lookup_lock_pg(spg_t pgid);
void register_pg(PGRef pg);
void unregister_pg(PG *pg);
void _get_pgids(vector<spg_t> *v);
public:
- PG *lookup_lock_pg(spg_t pgid);
+ PGRef lookup_lock_pg(spg_t pgid);
protected:
PG* _make_pg(OSDMapRef createmap, spg_t pgid);
int state = scrubber.state;
auto scrub_requeue_callback =
new FunctionContext([osds, pgid, state](int r) {
- PG *pg = osds->osd->lookup_lock_pg(pgid);
+ PGRef pg = osds->osd->lookup_lock_pg(pgid);
if (pg == nullptr) {
lgeneric_dout(osds->osd->cct, 20)
<< "scrub_requeue_callback: Could not find "