ceph_assert(state->rctx);
ceph_assert(state->rctx->query_map);
(*state->rctx->query_map)[to.osd][
- spg_t(pg->info.pgid.pgid, to.shard)] = query;
+ spg_t(context< PeeringMachine >().spgid.pgid, to.shard)] = query;
}
pg->osd->send_message_osd_cluster(
new MBackfillReserve(
MBackfillReserve::RELEASE,
- spg_t(pg->info.pgid.pgid, it->shard),
+ spg_t(context< PeeringMachine >().spgid.pgid, it->shard),
pg->get_osdmap_epoch()),
con.get());
}
pg->osd->send_message_osd_cluster(
new MBackfillReserve(
MBackfillReserve::REQUEST,
- spg_t(pg->info.pgid.pgid, backfill_osd_it->shard),
+ spg_t(context< PeeringMachine >().spgid.pgid, backfill_osd_it->shard),
pg->get_osdmap_epoch(),
pg->get_backfill_priority(),
num_bytes,
pg->osd->send_message_osd_cluster(
new MBackfillReserve(
MBackfillReserve::RELEASE,
- spg_t(pg->info.pgid.pgid, it->shard),
+ spg_t(context< PeeringMachine >().spgid.pgid, it->shard),
pg->get_osdmap_epoch()),
con.get());
}
pg->primary.osd,
new MRecoveryReserve(
MRecoveryReserve::GRANT,
- spg_t(pg->info.pgid.pgid, pg->primary.shard),
+ spg_t(context< PeeringMachine >().spgid.pgid, pg->primary.shard),
pg->get_osdmap_epoch()),
pg->get_osdmap_epoch());
return transit<RepRecovering>();
pg->primary.osd,
new MBackfillReserve(
MBackfillReserve::GRANT,
- spg_t(pg->info.pgid.pgid, pg->primary.shard),
+ spg_t(context< PeeringMachine >().spgid.pgid, pg->primary.shard),
pg->get_osdmap_epoch()),
pg->get_osdmap_epoch());
return transit<RepRecovering>();
pg->primary.osd,
new MRecoveryReserve(
MRecoveryReserve::REVOKE,
- spg_t(pg->info.pgid.pgid, pg->primary.shard),
+ spg_t(context< PeeringMachine >().spgid.pgid, pg->primary.shard),
pg->get_osdmap_epoch()),
pg->get_osdmap_epoch());
return discard_event();
pg->primary.osd,
new MBackfillReserve(
MBackfillReserve::TOOFULL,
- spg_t(pg->info.pgid.pgid, pg->primary.shard),
+ spg_t(context< PeeringMachine >().spgid.pgid, pg->primary.shard),
pg->get_osdmap_epoch()),
pg->get_osdmap_epoch());
return discard_event();
pg->primary.osd,
new MBackfillReserve(
MBackfillReserve::REVOKE,
- spg_t(pg->info.pgid.pgid, pg->primary.shard),
+ spg_t(context< PeeringMachine >().spgid.pgid, pg->primary.shard),
pg->get_osdmap_epoch()),
pg->get_osdmap_epoch());
return discard_event();
pg->osd->send_message_osd_cluster(
new MRecoveryReserve(
MRecoveryReserve::REQUEST,
- spg_t(pg->info.pgid.pgid, remote_recovery_reservation_it->shard),
+ spg_t(context< PeeringMachine >().spgid.pgid, remote_recovery_reservation_it->shard),
pg->get_osdmap_epoch(),
pg->get_recovery_priority()),
con.get());
pg->osd->send_message_osd_cluster(
new MRecoveryReserve(
MRecoveryReserve::RELEASE,
- spg_t(pg->info.pgid.pgid, i->shard),
+ spg_t(context< PeeringMachine >().spgid.pgid, i->shard),
pg->get_osdmap_epoch()),
con.get());
}
// if we finished backfill, all acting are active; recheck if
// DEGRADED | UNDERSIZED is appropriate.
ceph_assert(!pg->acting_recovery_backfill.empty());
- if (pg->get_osdmap()->get_pg_size(pg->info.pgid.pgid) <=
+ if (pg->get_osdmap()->get_pg_size(context< PeeringMachine >().spgid.pgid) <=
pg->acting_recovery_backfill.size()) {
pg->state_clear(PG_STATE_FORCED_BACKFILL | PG_STATE_FORCED_RECOVERY);
pg->publish_stats_to_osd();
/* Check for changes in pool size (if the acting set changed as a result,
* this does not matter) */
- if (advmap.lastmap->get_pg_size(pg->info.pgid.pgid) !=
- pg->get_osdmap()->get_pg_size(pg->info.pgid.pgid)) {
- if (pg->get_osdmap()->get_pg_size(pg->info.pgid.pgid) <= pg->actingset.size()) {
+ if (advmap.lastmap->get_pg_size(context< PeeringMachine >().spgid.pgid) !=
+ pg->get_osdmap()->get_pg_size(context< PeeringMachine >().spgid.pgid)) {
+ if (pg->get_osdmap()->get_pg_size(context< PeeringMachine >().spgid.pgid) <=
+ pg->actingset.size()) {
pg->state_clear(PG_STATE_UNDERSIZED);
} else {
pg->state_set(PG_STATE_UNDERSIZED);
if (unfound > 0 &&
pg->all_unfound_are_queried_or_lost(pg->get_osdmap())) {
if (pg->cct->_conf->osd_auto_mark_unfound_lost) {
- pg->osd->clog->error() << pg->info.pgid.pgid << " has " << unfound
+ pg->osd->clog->error() << context< PeeringMachine >().spgid.pgid << " has " << unfound
<< " objects unfound and apparently lost, would automatically "
<< "mark these objects lost but this feature is not yet implemented "
<< "(osd_auto_mark_unfound_lost)";
} else
- pg->osd->clog->error() << pg->info.pgid.pgid << " has "
+ pg->osd->clog->error() << context< PeeringMachine >().spgid.pgid << " has "
<< unfound << " objects unfound and apparently lost";
}
boost::statechart::result PeeringState::Active::react(const AllReplicasActivated &evt)
{
PG *pg = context< PeeringMachine >().pg;
- pg_t pgid = pg->info.pgid.pgid;
+ pg_t pgid = context< PeeringMachine >().spgid.pgid;
all_replicas_activated = true;
PeeringState *state;
public:
CephContext *cct;
+ spg_t spgid;
PG *pg;
utime_t event_time;
void log_enter(const char *state_name);
void log_exit(const char *state_name, utime_t duration);
- PeeringMachine(PeeringState *state, CephContext *cct, PG *pg) :
- state(state), cct(cct), pg(pg), event_count(0) {}
+ PeeringMachine(PeeringState *state, CephContext *cct, spg_t spgid, PG *pg) :
+ state(state), cct(cct), spgid(spgid), pg(pg), event_count(0) {}
/* Accessor functions for state methods */
ObjectStore::Transaction* get_cur_transaction() {
PeeringMachine machine;
CephContext* cct;
+ spg_t spgid;
PG *pg;
/// context passed in by state machine caller
boost::optional<PeeringCtx> rctx;
public:
- explicit PeeringState(CephContext *cct, PG *pg)
- : machine(this, cct, pg), cct(cct), pg(pg), orig_ctx(0) {
+ explicit PeeringState(CephContext *cct, spg_t spgid, PG *pg)
+ : machine(this, cct, spgid, pg), cct(cct), spgid(spgid), pg(pg), orig_ctx(0) {
machine.initiate();
}