if (pi == nullptr) {
buffer.push_back(std::unique_ptr<PGStateInstance>(tmppi.release()));
pi = buffer.back().get();
- pi->setepoch(thispg->get_osdmap()->get_epoch());
+ pi->setepoch(thispg->get_osdmap_epoch());
}
pi->exit_state(ceph_clock_now());
make_pair(
pg_notify_t(
from.shard, pg_whoami.shard,
- get_osdmap()->get_epoch(),
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
+ get_osdmap_epoch(),
tinfo),
past_intervals));
}
pg_query_t(
pg_query_t::FULLLOG,
peer.shard, pg_whoami.shard,
- info.history, get_osdmap()->get_epoch());
+ info.history, get_osdmap_epoch());
}
}
t.register_on_complete(
new C_PG_ActivateCommitted(
this,
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
activation_epoch));
if (is_primary()) {
make_pair(
pg_notify_t(
peer.shard, pg_whoami.shard,
- get_osdmap()->get_epoch(),
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
+ get_osdmap_epoch(),
info),
past_intervals));
} else {
dout(10) << "activate peer osd." << peer << " is up to date, but sending pg_log anyway" << dendl;
m = new MOSDPGLog(
i->shard, pg_whoami.shard,
- get_osdmap()->get_epoch(), info,
+ get_osdmap_epoch(), info,
last_peering_reset);
}
} else if (
m = new MOSDPGLog(
i->shard, pg_whoami.shard,
- get_osdmap()->get_epoch(), pi,
+ get_osdmap_epoch(), pi,
last_peering_reset /* epoch to create pg at */);
// send some recent log, so that op dup detection works well.
ceph_assert(pg_log.get_tail() <= pi.last_update);
m = new MOSDPGLog(
i->shard, pg_whoami.shard,
- get_osdmap()->get_epoch(), info,
+ get_osdmap_epoch(), info,
last_peering_reset /* epoch to create pg at */);
// send new stuff to append to replicas log
m->log.copy_after(pg_log.get_log(), pi.last_update);
if (m) {
dout(10) << "activate peer osd." << peer << " sending " << m->log << dendl;
//m->log.print(cout);
- osd->send_message_osd_cluster(peer.osd, m, get_osdmap()->get_epoch());
+ osd->send_message_osd_cluster(peer.osd, m, get_osdmap_epoch());
}
// peer now has
MOSDPGInfo *m = new MOSDPGInfo(epoch);
pg_notify_t i = pg_notify_t(
get_primary().shard, pg_whoami.shard,
- get_osdmap()->get_epoch(),
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
+ get_osdmap_epoch(),
info);
i.info.history.last_epoch_started = activation_epoch;
}
m->pg_list.push_back(make_pair(i, PastIntervals()));
- osd->send_message_osd_cluster(get_primary().osd, m, get_osdmap()->get_epoch());
+ osd->send_message_osd_cluster(get_primary().osd, m, get_osdmap_epoch());
// waiters
if (flushes_in_progress == 0) {
queue_peering_event(
PGPeeringEventRef(
std::make_shared<PGPeeringEvent>(
- get_osdmap()->get_epoch(),
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
+ get_osdmap_epoch(),
AllReplicasActivated())));
}
if (actingset.size() == get_osdmap()->get_pg_size(info.pgid.pgid)) {
state_clear(PG_STATE_FORCED_BACKFILL | PG_STATE_FORCED_RECOVERY);
state_set(PG_STATE_CLEAN);
- info.history.last_epoch_clean = get_osdmap()->get_epoch();
+ info.history.last_epoch_clean = get_osdmap_epoch();
info.history.last_interval_clean = info.history.same_interval_since;
past_intervals.clear();
dirty_big_info = true;
// Info
child->info.history = info.history;
- child->info.history.epoch_created = get_osdmap()->get_epoch();
+ child->info.history.epoch_created = get_osdmap_epoch();
child->info.purged_snaps = info.purged_snaps;
if (info.last_backfill.is_max()) {
// this comparison includes primary rank via pg_shard_t
if (get_primary() != child->get_primary())
- child->info.history.same_primary_since = get_osdmap()->get_epoch();
+ child->info.history.same_primary_since = get_osdmap_epoch();
child->info.stats.up = up;
child->info.stats.up_primary = up_primary;
child->info.stats.acting = acting;
child->info.stats.acting_primary = primary;
- child->info.stats.mapping_epoch = get_osdmap()->get_epoch();
+ child->info.stats.mapping_epoch = get_osdmap_epoch();
// History
child->past_intervals = past_intervals;
con->send_message(
new MOSDBackoff(
info.pgid,
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
CEPH_OSD_BACKOFF_OP_BLOCK,
b->id,
begin,
con->send_message(
new MOSDBackoff(
info.pgid,
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
CEPH_OSD_BACKOFF_OP_UNBLOCK,
b->id,
b->begin,
vector<spg_t> to_remove;
to_remove.push_back(spg_t(info.pgid.pgid, p->shard));
MOSDPGRemove *m = new MOSDPGRemove(
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
to_remove);
- osd->send_message_osd_cluster(p->osd, m, get_osdmap()->get_epoch());
+ osd->send_message_osd_cluster(p->osd, m, get_osdmap_epoch());
} else {
dout(10) << "not sending PGRemove to down osd." << *p << dendl;
}
<< ": no change since " << info.stats.last_fresh << dendl;
} else {
// update our stat summary and timestamps
- info.stats.reported_epoch = get_osdmap()->get_epoch();
+ info.stats.reported_epoch = get_osdmap_epoch();
++info.stats.reported_seq;
info.stats.last_fresh = now;
info.stats.stats.add(unstable_stats);
unstable_stats.clear();
- bool need_update_epoch = last_epoch < get_osdmap()->get_epoch();
- int ret = _prepare_write_info(cct, km, get_osdmap()->get_epoch(),
+ bool need_update_epoch = last_epoch < get_osdmap_epoch();
+ int ret = _prepare_write_info(cct, km, get_osdmap_epoch(),
info,
last_written_info,
past_intervals,
osd->logger);
ceph_assert(ret == 0);
if (need_update_epoch)
- last_epoch = get_osdmap()->get_epoch();
+ last_epoch = get_osdmap_epoch();
last_persisted_osdmap = last_epoch;
dirty_info = false;
op->get_req()->get_priority(),
op->get_req()->get_recv_stamp(),
op->get_req()->get_source().num(),
- get_osdmap()->get_epoch()));
+ get_osdmap_epoch()));
}
}
void PG::requeue_map_waiters()
{
- epoch_t epoch = get_osdmap()->get_epoch();
+ epoch_t epoch = get_osdmap_epoch();
auto p = waiting_for_map.begin();
while (p != waiting_for_map.end()) {
if (epoch < p->second.front()->min_epoch) {
<< " deep " << (int)deep << dendl;
MOSDRepScrub *repscrubop = new MOSDRepScrub(
spg_t(info.pgid.pgid, replica.shard), version,
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
get_last_peering_reset(),
start, end, deep,
allow_preemption,
// default priority, we want the rep scrub processed prior to any recovery
// or client io messages (we are holding a lock!)
osd->send_message_osd_cluster(
- replica.osd, repscrubop, get_osdmap()->get_epoch());
+ replica.osd, repscrubop, get_osdmap_epoch());
}
void PG::handle_scrub_reserve_request(OpRequestRef op)
new MBackfillReserve(
MBackfillReserve::REJECT,
spg_t(info.pgid.pgid, primary.shard),
- get_osdmap()->get_epoch()),
- get_osdmap()->get_epoch());
+ get_osdmap_epoch()),
+ get_osdmap_epoch());
}
void PG::schedule_backfill_retry(float delay)
osd->recovery_request_timer.add_event_after(
delay,
new QueuePeeringEvt<RequestBackfill>(
- this, get_osdmap()->get_epoch(),
+ this, get_osdmap_epoch(),
RequestBackfill()));
}
osd->recovery_request_timer.add_event_after(
delay,
new QueuePeeringEvt<DoRecovery>(
- this, get_osdmap()->get_epoch(),
+ this, get_osdmap_epoch(),
DoRecovery()));
}
osd->send_message_osd_cluster(
i->osd,
new MOSDScrubReserve(spg_t(info.pgid.pgid, i->shard),
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
MOSDScrubReserve::REQUEST, pg_whoami),
- get_osdmap()->get_epoch());
+ get_osdmap_epoch());
}
}
osd->send_message_osd_cluster(
i->osd,
new MOSDScrubReserve(spg_t(info.pgid.pgid, i->shard),
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
MOSDScrubReserve::RELEASE, pg_whoami),
- get_osdmap()->get_epoch());
+ get_osdmap_epoch());
}
}
queue_peering_event(
PGPeeringEventRef(
std::make_shared<PGPeeringEvent>(
- get_osdmap()->get_epoch(),
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
+ get_osdmap_epoch(),
DoRecovery())));
}
peer->second.last_interval_started = info.last_interval_started;
peer->second.history.merge(info.history);
}
- MOSDPGInfo *m = new MOSDPGInfo(get_osdmap()->get_epoch());
+ MOSDPGInfo *m = new MOSDPGInfo(get_osdmap_epoch());
m->pg_list.push_back(
make_pair(
pg_notify_t(
pg_shard.shard, pg_whoami.shard,
- get_osdmap()->get_epoch(),
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
+ get_osdmap_epoch(),
info),
past_intervals));
- osd->send_message_osd_cluster(pg_shard.osd, m, get_osdmap()->get_epoch());
+ osd->send_message_osd_cluster(pg_shard.osd, m, get_osdmap_epoch());
}
}
ceph_assert(from == primary);
ceph_assert(query.type != pg_query_t::INFO);
ConnectionRef con = osd->get_con_osd_cluster(
- from.osd, get_osdmap()->get_epoch());
+ from.osd, get_osdmap_epoch());
if (!con) return;
MOSDPGLog *mlog = new MOSDPGLog(
from.shard, pg_whoami.shard,
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
info, query_epoch);
mlog->missing = pg_log.get_missing();
pg_notify_t(
notify_info.first.shard, pg_whoami.shard,
query.query_epoch,
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
notify_info.second),
past_intervals);
} else {
void PG::set_last_peering_reset()
{
- dout(20) << "set_last_peering_reset " << get_osdmap()->get_epoch() << dendl;
- if (last_peering_reset != get_osdmap()->get_epoch()) {
- last_peering_reset = get_osdmap()->get_epoch();
+ dout(20) << "set_last_peering_reset " << get_osdmap_epoch() << dendl;
+ if (last_peering_reset != get_osdmap_epoch()) {
+ last_peering_reset = get_osdmap_epoch();
reset_interval_flush();
}
}
{
// flush in progress ops
FlushStateRef flush_trigger (std::make_shared<FlushState>(
- this, get_osdmap()->get_epoch()));
+ this, get_osdmap_epoch()));
flushes_in_progress++;
t->register_on_applied(new ContainerContext<FlushStateRef>(flush_trigger));
t->register_on_commit(new ContainerContext<FlushStateRef>(flush_trigger));
recovery_state.clear_blocked_outgoing();
Context *c = new QueuePeeringEvt<IntervalFlush>(
- this, get_osdmap()->get_epoch(), IntervalFlush());
+ this, get_osdmap_epoch(), IntervalFlush());
if (!ch->flush_commit(c)) {
dout(10) << "Beginning to block outgoing recovery messages" << dendl;
recovery_state.begin_block_outgoing();
t->remove(coll, oid);
++num;
}
- epoch_t e = get_osdmap()->get_epoch();
if (num) {
dout(20) << __func__ << " deleting " << num << " objects" << dendl;
- Context *fin = new C_DeleteMore(this, e);
+ Context *fin = new C_DeleteMore(this, get_osdmap_epoch());
t->register_on_commit(fin);
} else {
dout(20) << __func__ << " finished" << dendl;
pg->get_primary(),
pg_notify_t(
pg->get_primary().shard, pg->pg_whoami.shard,
- pg->get_osdmap()->get_epoch(),
- pg->get_osdmap()->get_epoch(),
+ pg->get_osdmap_epoch(),
+ pg->get_osdmap_epoch(),
pg->info),
pg->past_intervals);
}
++it) {
ceph_assert(*it != pg->pg_whoami);
ConnectionRef con = pg->osd->get_con_osd_cluster(
- it->osd, pg->get_osdmap()->get_epoch());
+ it->osd, pg->get_osdmap_epoch());
if (con) {
pg->osd->send_message_osd_cluster(
new MBackfillReserve(
MBackfillReserve::RELEASE,
spg_t(pg->info.pgid.pgid, it->shard),
- pg->get_osdmap()->get_epoch()),
+ pg->get_osdmap_epoch()),
con.get());
}
}
//The primary never backfills itself
ceph_assert(*backfill_osd_it != pg->pg_whoami);
ConnectionRef con = pg->osd->get_con_osd_cluster(
- backfill_osd_it->osd, pg->get_osdmap()->get_epoch());
+ backfill_osd_it->osd, pg->get_osdmap_epoch());
if (con) {
pg->osd->send_message_osd_cluster(
new MBackfillReserve(
MBackfillReserve::REQUEST,
spg_t(pg->info.pgid.pgid, backfill_osd_it->shard),
- pg->get_osdmap()->get_epoch(),
+ pg->get_osdmap_epoch(),
pg->get_backfill_priority()),
con.get());
}
//The primary never backfills itself
ceph_assert(*it != pg->pg_whoami);
ConnectionRef con = pg->osd->get_con_osd_cluster(
- it->osd, pg->get_osdmap()->get_epoch());
+ it->osd, pg->get_osdmap_epoch());
if (con) {
pg->osd->send_message_osd_cluster(
new MBackfillReserve(
MBackfillReserve::RELEASE,
spg_t(pg->info.pgid.pgid, it->shard),
- pg->get_osdmap()->get_epoch()),
+ pg->get_osdmap_epoch()),
con.get());
}
}
pg->osd->local_reserver.request_reservation(
pg->info.pgid,
new QueuePeeringEvt<LocalBackfillReserved>(
- pg, pg->get_osdmap()->get_epoch(),
+ pg, pg->get_osdmap_epoch(),
LocalBackfillReserved()),
pg->get_backfill_priority(),
new QueuePeeringEvt<DeferBackfill>(
- pg, pg->get_osdmap()->get_epoch(),
+ pg, pg->get_osdmap_epoch(),
DeferBackfill(0.0)));
pg->publish_stats_to_osd();
}
new MRecoveryReserve(
MRecoveryReserve::GRANT,
spg_t(pg->info.pgid.pgid, pg->primary.shard),
- pg->get_osdmap()->get_epoch()),
- pg->get_osdmap()->get_epoch());
+ pg->get_osdmap_epoch()),
+ pg->get_osdmap_epoch());
return transit<RepRecovering>();
}
if (HAVE_FEATURE(pg->upacting_features, RECOVERY_RESERVATION_2)) {
// older peers will interpret preemption as TOOFULL
preempt = new QueuePeeringEvt<RemoteBackfillPreempted>(
- pg, pg->get_osdmap()->get_epoch(),
+ pg, pg->get_osdmap_epoch(),
RemoteBackfillPreempted());
}
pg->osd->remote_reserver.request_reservation(
pg->info.pgid,
new QueuePeeringEvt<RemoteBackfillReserved>(
- pg, pg->get_osdmap()->get_epoch(),
+ pg, pg->get_osdmap_epoch(),
RemoteBackfillReserved()),
evt.priority,
preempt);
if (HAVE_FEATURE(pg->upacting_features, RECOVERY_RESERVATION_2)) {
// older peers can't handle this
preempt = new QueuePeeringEvt<RemoteRecoveryPreempted>(
- pg, pg->get_osdmap()->get_epoch(),
+ pg, pg->get_osdmap_epoch(),
RemoteRecoveryPreempted());
}
pg->osd->remote_reserver.request_reservation(
pg->info.pgid,
new QueuePeeringEvt<RemoteRecoveryReserved>(
- pg, pg->get_osdmap()->get_epoch(),
+ pg, pg->get_osdmap_epoch(),
RemoteRecoveryReserved()),
prio,
preempt);
new MBackfillReserve(
MBackfillReserve::GRANT,
spg_t(pg->info.pgid.pgid, pg->primary.shard),
- pg->get_osdmap()->get_epoch()),
- pg->get_osdmap()->get_epoch());
+ pg->get_osdmap_epoch()),
+ pg->get_osdmap_epoch());
return transit<RepRecovering>();
}
}
new MRecoveryReserve(
MRecoveryReserve::REVOKE,
spg_t(pg->info.pgid.pgid, pg->primary.shard),
- pg->get_osdmap()->get_epoch()),
- pg->get_osdmap()->get_epoch());
+ pg->get_osdmap_epoch()),
+ pg->get_osdmap_epoch());
return discard_event();
}
new MBackfillReserve(
MBackfillReserve::TOOFULL,
spg_t(pg->info.pgid.pgid, pg->primary.shard),
- pg->get_osdmap()->get_epoch()),
- pg->get_osdmap()->get_epoch());
+ pg->get_osdmap_epoch()),
+ pg->get_osdmap_epoch());
return discard_event();
}
new MBackfillReserve(
MBackfillReserve::REVOKE,
spg_t(pg->info.pgid.pgid, pg->primary.shard),
- pg->get_osdmap()->get_epoch()),
- pg->get_osdmap()->get_epoch());
+ pg->get_osdmap_epoch()),
+ pg->get_osdmap_epoch());
return discard_event();
}
pg->osd->local_reserver.request_reservation(
pg->info.pgid,
new QueuePeeringEvt<LocalRecoveryReserved>(
- pg, pg->get_osdmap()->get_epoch(),
+ pg, pg->get_osdmap_epoch(),
LocalRecoveryReserved()),
pg->get_recovery_priority(),
new QueuePeeringEvt<DeferRecovery>(
- pg, pg->get_osdmap()->get_epoch(),
+ pg, pg->get_osdmap_epoch(),
DeferRecovery(0.0)));
pg->publish_stats_to_osd();
}
if (remote_recovery_reservation_it != context< Active >().remote_shards_to_reserve_recovery.end()) {
ceph_assert(*remote_recovery_reservation_it != pg->pg_whoami);
ConnectionRef con = pg->osd->get_con_osd_cluster(
- remote_recovery_reservation_it->osd, pg->get_osdmap()->get_epoch());
+ remote_recovery_reservation_it->osd, pg->get_osdmap_epoch());
if (con) {
pg->osd->send_message_osd_cluster(
new MRecoveryReserve(
MRecoveryReserve::REQUEST,
spg_t(pg->info.pgid.pgid, remote_recovery_reservation_it->shard),
- pg->get_osdmap()->get_epoch(),
+ pg->get_osdmap_epoch(),
pg->get_recovery_priority()),
con.get());
}
if (*i == pg->pg_whoami) // skip myself
continue;
ConnectionRef con = pg->osd->get_con_osd_cluster(
- i->osd, pg->get_osdmap()->get_epoch());
+ i->osd, pg->get_osdmap_epoch());
if (con) {
pg->osd->send_message_osd_cluster(
new MRecoveryReserve(
MRecoveryReserve::RELEASE,
spg_t(pg->info.pgid.pgid, i->shard),
- pg->get_osdmap()->get_epoch()),
+ pg->get_osdmap_epoch()),
con.get());
}
}
ldout(pg->cct, 10) << "In Active, about to call activate" << dendl;
pg->start_flush(context< RecoveryMachine >().get_cur_transaction());
pg->activate(*context< RecoveryMachine >().get_cur_transaction(),
- pg->get_osdmap()->get_epoch(),
+ pg->get_osdmap_epoch(),
*context< RecoveryMachine >().get_query_map(),
context< RecoveryMachine >().get_info_map(),
context< RecoveryMachine >().get_recovery_ctx());
pg->get_primary(),
pg_notify_t(
pg->get_primary().shard, pg->pg_whoami.shard,
- pg->get_osdmap()->get_epoch(),
- pg->get_osdmap()->get_epoch(),
+ pg->get_osdmap_epoch(),
+ pg->get_osdmap_epoch(),
pg->info),
pg->past_intervals);
}
pg->get_primary(),
pg_notify_t(
pg->get_primary().shard, pg->pg_whoami.shard,
- pg->get_osdmap()->get_epoch(),
- pg->get_osdmap()->get_epoch(),
+ pg->get_osdmap_epoch(),
+ pg->get_osdmap_epoch(),
pg->info),
pg->past_intervals);
}
pg->osd->local_reserver.request_reservation(
pg->info.pgid,
new QueuePeeringEvt<DeleteReserved>(
- pg, pg->get_osdmap()->get_epoch(),
+ pg, pg->get_osdmap_epoch(),
DeleteReserved()),
context<ToDelete>().priority,
new QueuePeeringEvt<DeleteInterrupted>(
- pg, pg->get_osdmap()->get_epoch(),
+ pg, pg->get_osdmap_epoch(),
DeleteInterrupted()));
}
pg->deleting = true;
ObjectStore::Transaction* t = context<RecoveryMachine>().get_cur_transaction();
pg->on_removal(t);
- t->register_on_commit(new C_DeleteMore(pg, pg->get_osdmap()->get_epoch()));
+ t->register_on_commit(new C_DeleteMore(pg, pg->get_osdmap_epoch()));
}
boost::statechart::result PG::RecoveryState::Deleting::react(
peer, pg_query_t(pg_query_t::INFO,
it->shard, pg->pg_whoami.shard,
pg->info.history,
- pg->get_osdmap()->get_epoch()));
+ pg->get_osdmap_epoch()));
peer_info_requested.insert(peer);
pg->blocked_by.insert(peer.osd);
}
pg_query_t::LOG,
auth_log_shard.shard, pg->pg_whoami.shard,
request_log_from, pg->info.history,
- pg->get_osdmap()->get_epoch()));
+ pg->get_osdmap_epoch()));
ceph_assert(pg->blocked_by.empty());
pg->blocked_by.insert(auth_log_shard.osd);
pg_query_t::LOG,
i->shard, pg->pg_whoami.shard,
since, pg->info.history,
- pg->get_osdmap()->get_epoch()));
+ pg->get_osdmap_epoch()));
} else {
ldout(pg->cct, 10) << " requesting fulllog+missing from osd." << *i
<< " (want since " << since << " < log.tail "
*i, pg_query_t(
pg_query_t::FULLLOG,
i->shard, pg->pg_whoami.shard,
- pg->info.history, pg->get_osdmap()->get_epoch()));
+ pg->info.history, pg->get_osdmap_epoch()));
}
peer_missing_requested.insert(*i);
pg->blocked_by.insert(i->osd);
}
// all good!
- post_event(Activate(pg->get_osdmap()->get_epoch()));
+ post_event(Activate(pg->get_osdmap_epoch()));
} else {
pg->publish_stats_to_osd();
}
} else {
ldout(pg->cct, 10) << "Got last missing, don't need missing "
<< "posting Activate" << dendl;
- post_event(Activate(pg->get_osdmap()->get_epoch()));
+ post_event(Activate(pg->get_osdmap_epoch()));
}
}
return discard_event();
{
PG *pg = context< RecoveryMachine >().pg;
if (!pg->need_up_thru) {
- post_event(Activate(pg->get_osdmap()->get_epoch()));
+ post_event(Activate(pg->get_osdmap_epoch()));
}
return forward_event();
}
t->register_on_commit(
new C_OSD_CommittedPushedObject(
this,
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
info.last_complete));
// update pg
f->dump_string("state", pg_state_string(get_state()));
f->dump_stream("snap_trimq") << snap_trimq;
f->dump_unsigned("snap_trimq_len", snap_trimq.size());
- f->dump_unsigned("epoch", get_osdmap()->get_epoch());
+ f->dump_unsigned("epoch", get_osdmap_epoch());
f->open_array_section("up");
for (vector<int>::iterator p = up.begin(); p != up.end(); ++p)
f->dump_unsigned("osd", *p);
}
// reply
- MOSDOpReply *reply = new MOSDOpReply(m, 0, get_osdmap()->get_epoch(),
+ MOSDOpReply *reply = new MOSDOpReply(m, 0, get_osdmap_epoch(),
CEPH_OSD_FLAG_ACK | CEPH_OSD_FLAG_ONDISK,
false);
reply->claim_op_out_data(ops);
int flags = m->get_flags() & (CEPH_OSD_FLAG_ACK | CEPH_OSD_FLAG_ONDISK);
MOSDOpReply *reply = orig_reply.detach();
if (reply == nullptr) {
- reply = new MOSDOpReply(m, r, pg->get_osdmap()->get_epoch(),
+ reply = new MOSDOpReply(m, r, pg->get_osdmap_epoch(),
flags, true);
}
ldpp_dout(pg, 10) << " sending commit on " << *m << " " << reply << dendl;
{
const MOSDOp *m = static_cast<const MOSDOp*>(op->get_req());
int flags = m->get_flags() & (CEPH_OSD_FLAG_ACK|CEPH_OSD_FLAG_ONDISK);
- MOSDOpReply *reply = new MOSDOpReply(m, -ENOENT, get_osdmap()->get_epoch(),
+ MOSDOpReply *reply = new MOSDOpReply(m, -ENOENT, get_osdmap_epoch(),
flags, false);
request_redirect_t redir(m->get_object_locator(), pool.info.tier_of);
reply->set_redirect(redir);
const MOSDOp *m = static_cast<const MOSDOp*>(op->get_req());
OpContext *ctx = new OpContext(op, m->get_reqid(), &prdop->ops, this);
- ctx->reply = new MOSDOpReply(m, 0, get_osdmap()->get_epoch(), 0, false);
+ ctx->reply = new MOSDOpReply(m, 0, get_osdmap_epoch(), 0, false);
ctx->user_at_version = prdop->user_version;
ctx->data_off = prdop->data_offset;
ctx->ignore_log_op_stats = true;
if (!chunk_index && !chunk_length) {
if (cursor == osd_op->op.extent.offset) {
OpContext *ctx = new OpContext(op, m->get_reqid(), &m->ops, this);
- ctx->reply = new MOSDOpReply(m, 0, get_osdmap()->get_epoch(), 0, false);
+ ctx->reply = new MOSDOpReply(m, 0, get_osdmap_epoch(), 0, false);
ctx->data_off = osd_op->op.extent.offset;
ctx->ignore_log_op_stats = true;
complete_read_ctx(0, ctx);
if (reply)
pwop->ctx->reply = NULL;
else {
- reply = new MOSDOpReply(m, r, get_osdmap()->get_epoch(), 0, true);
+ reply = new MOSDOpReply(m, r, get_osdmap_epoch(), 0, true);
reply->set_reply_versions(eversion_t(), pwop->user_version);
}
reply->add_flags(CEPH_OSD_FLAG_ACK | CEPH_OSD_FLAG_ONDISK);
queue_peering_event(
PGPeeringEventRef(
std::make_shared<PGPeeringEvent>(
- get_osdmap()->get_epoch(),
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
+ get_osdmap_epoch(),
BackfillTooFull())));
return;
}
MOSDPGScan *reply = new MOSDPGScan(
MOSDPGScan::OP_SCAN_DIGEST,
pg_whoami,
- get_osdmap()->get_epoch(), m->query_epoch,
+ get_osdmap_epoch(), m->query_epoch,
spg_t(info.pgid.pgid, get_primary().shard), bi.begin, bi.end);
encode(bi.objects, reply->get_data());
osd->send_message_osd_cluster(reply, m->get_connection());
MOSDPGBackfill *reply = new MOSDPGBackfill(
MOSDPGBackfill::OP_BACKFILL_FINISH_ACK,
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
m->query_epoch,
spg_t(info.pgid.pgid, get_primary().shard));
reply->set_priority(get_recovery_op_priority());
queue_peering_event(
PGPeeringEventRef(
std::make_shared<PGPeeringEvent>(
- get_osdmap()->get_epoch(),
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
+ get_osdmap_epoch(),
RecoveryDone())));
}
// fall-thru
notify_info_t n;
n.timeout = timeout;
- n.notify_id = osd->get_next_id(get_osdmap()->get_epoch());
+ n.notify_id = osd->get_next_id(get_osdmap_epoch());
n.cookie = op.watch.cookie;
n.bl = bl;
ctx->notifies.push_back(n);
dout(20) << __func__ << " got reqids " << reply_obj.reqids << dendl;
encode(reply_obj, osd_op.outdata, features);
osd_op.rval = -ENOENT;
- MOSDOpReply *reply = new MOSDOpReply(m, 0, get_osdmap()->get_epoch(), 0, false);
+ MOSDOpReply *reply = new MOSDOpReply(m, 0, get_osdmap_epoch(), 0, false);
reply->claim_op_out_data(m->ops);
reply->set_result(-ENOENT);
reply->add_flags(CEPH_OSD_FLAG_ACK | CEPH_OSD_FLAG_ONDISK);
entries,
spg_t(info.pgid.pgid, i->shard),
pg_whoami.shard,
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
last_peering_reset,
repop->rep_tid,
pg_trim_to,
min_last_complete_ondisk);
osd->send_message_osd_cluster(
- peer.osd, m, get_osdmap()->get_epoch());
+ peer.osd, m, get_osdmap_epoch());
waiting_on.insert(peer);
} else {
MOSDPGLog *m = new MOSDPGLog(
m->log.tail = old_last_update;
m->log.head = info.last_update;
osd->send_message_osd_cluster(
- peer.osd, m, get_osdmap()->get_epoch());
+ peer.osd, m, get_osdmap_epoch());
}
}
ceph_tid_t rep_tid = repop->rep_tid;
}
};
t.register_on_commit(
- new OnComplete{this, rep_tid, get_osdmap()->get_epoch()});
+ new OnComplete{this, rep_tid, get_osdmap_epoch()});
int r = osd->store->queue_transaction(ch, std::move(t), NULL);
ceph_assert(r == 0);
op_applied(info.last_update);
start_recovery_op(soid);
ceph_assert(!recovering.count(soid));
recovering.insert(make_pair(soid, ObjectContextRef()));
- epoch_t cur_epoch = get_osdmap()->get_epoch();
+ epoch_t cur_epoch = get_osdmap_epoch();
remove_missing_object(soid, v, new FunctionContext(
[=](int) {
lock();
recovery_info.soid = soid;
recovery_info.version = v;
- epoch_t cur_epoch = get_osdmap()->get_epoch();
+ epoch_t cur_epoch = get_osdmap_epoch();
t.register_on_complete(new FunctionContext(
[=](int) {
lock();
osd->send_message_osd_cluster(
get_primary().osd,
new MOSDPGTrim(
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
spg_t(info.pgid.pgid, get_primary().shard),
last_complete_ondisk),
- get_osdmap()->get_epoch());
+ get_osdmap_epoch());
} else {
calc_min_last_complete_ondisk();
}
op->get_req()->get_priority(),
op->get_req()->get_recv_stamp(),
op->get_req()->get_source().num(),
- get_osdmap()->get_epoch()));
+ get_osdmap_epoch()));
scrubber.active_rep_scrub.reset();
}
}
ObcLockManager manager;
eversion_t v = get_next_version();
- v.epoch = get_osdmap()->get_epoch();
+ v.epoch = get_osdmap_epoch();
uint64_t num_unfound = missing_loc.num_unfound();
while (m != mend) {
const hobject_t &oid(m->first);
queue_peering_event(
PGPeeringEventRef(
std::make_shared<PGPeeringEvent>(
- get_osdmap()->get_epoch(),
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
+ get_osdmap_epoch(),
DoRecovery())));
} else if (is_backfill_unfound()) {
queue_peering_event(
PGPeeringEventRef(
std::make_shared<PGPeeringEvent>(
- get_osdmap()->get_epoch(),
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
+ get_osdmap_epoch(),
RequestBackfill())));
} else {
queue_recovery();
queue_peering_event(
PGPeeringEventRef(
std::make_shared<PGPeeringEvent>(
- get_osdmap()->get_epoch(),
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
+ get_osdmap_epoch(),
DoRecovery())));
} else if (needs_backfill()) {
dout(10) << "activate queueing backfill" << dendl;
queue_peering_event(
PGPeeringEventRef(
std::make_shared<PGPeeringEvent>(
- get_osdmap()->get_epoch(),
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
+ get_osdmap_epoch(),
RequestBackfill())));
} else {
dout(10) << "activate all replicas clean, no recovery" << dendl;
queue_peering_event(
PGPeeringEventRef(
std::make_shared<PGPeeringEvent>(
- get_osdmap()->get_epoch(),
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
+ get_osdmap_epoch(),
AllReplicasRecovered())));
}
queue_peering_event(
PGPeeringEventRef(
std::make_shared<PGPeeringEvent>(
- get_osdmap()->get_epoch(),
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
+ get_osdmap_epoch(),
RequestBackfill())));
}
deferred_backfill = true;
queue_peering_event(
PGPeeringEventRef(
std::make_shared<PGPeeringEvent>(
- get_osdmap()->get_epoch(),
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
+ get_osdmap_epoch(),
RequestBackfill())));
} else {
dout(10) << "recovery done, no backfill" << dendl;
queue_peering_event(
PGPeeringEventRef(
std::make_shared<PGPeeringEvent>(
- get_osdmap()->get_epoch(),
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
+ get_osdmap_epoch(),
AllReplicasRecovered())));
}
} else { // backfilling
queue_peering_event(
PGPeeringEventRef(
std::make_shared<PGPeeringEvent>(
- get_osdmap()->get_epoch(),
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
+ get_osdmap_epoch(),
Backfilled())));
}
t.register_on_applied(new C_OSD_AppliedRecoveredObject(this, obc));
t.register_on_commit(new C_OSD_CommittedPushedObject(
this,
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
info.last_complete));
osd->store->queue_transaction(ch, std::move(t));
continue;
if (pbi.begin <= backfill_info.begin &&
!pbi.extends_to_end() && pbi.empty()) {
dout(10) << " scanning peer osd." << bt << " from " << pbi.end << dendl;
- epoch_t e = get_osdmap()->get_epoch();
+ epoch_t e = get_osdmap_epoch();
MOSDPGScan *m = new MOSDPGScan(
MOSDPGScan::OP_SCAN_GET_DIGEST, pg_whoami, e, last_peering_reset,
spg_t(info.pgid.pgid, bt.shard),
pbi.end, hobject_t());
- osd->send_message_osd_cluster(bt.osd, m, get_osdmap()->get_epoch());
+ osd->send_message_osd_cluster(bt.osd, m, get_osdmap_epoch());
ceph_assert(waiting_on_backfill.find(bt) == waiting_on_backfill.end());
waiting_on_backfill.insert(bt);
sent_scan = true;
} else {
m = reqs[peer] = new MOSDPGBackfillRemove(
spg_t(info.pgid.pgid, peer.shard),
- get_osdmap()->get_epoch());
+ get_osdmap_epoch());
}
m->ls.push_back(make_pair(oid, v));
}
for (auto p : reqs) {
osd->send_message_osd_cluster(p.first.osd, p.second,
- get_osdmap()->get_epoch());
+ get_osdmap_epoch());
}
pgbackend->run_recovery_op(h, get_recovery_op_priority());
if (new_last_backfill > pinfo.last_backfill) {
pinfo.set_last_backfill(new_last_backfill);
- epoch_t e = get_osdmap()->get_epoch();
+ epoch_t e = get_osdmap_epoch();
MOSDPGBackfill *m = NULL;
if (pinfo.last_backfill.is_max()) {
m = new MOSDPGBackfill(
}
m->last_backfill = pinfo.last_backfill;
m->stats = pinfo.stats;
- osd->send_message_osd_cluster(bt.osd, m, get_osdmap()->get_epoch());
+ osd->send_message_osd_cluster(bt.osd, m, get_osdmap_epoch());
dout(10) << " peer " << bt
<< " num_objects now " << pinfo.stats.stats.sum.num_objects
<< " / " << info.stats.stats.sum.num_objects << dendl;
queue_peering_event(
PGPeeringEventRef(
std::make_shared<PGPeeringEvent>(
- get_osdmap()->get_epoch(),
- get_osdmap()->get_epoch(),
+ get_osdmap_epoch(),
+ get_osdmap_epoch(),
DoRecovery())));
} else {
// A prior error must have already cleared clean state and queued recovery