backfill_targets(recovery_state.backfill_targets),
async_recovery_targets(recovery_state.async_recovery_targets),
might_have_unfound(recovery_state.might_have_unfound),
- deleting(recovery_state.deleting),
- deleted(recovery_state.deleted),
missing_loc(recovery_state.missing_loc),
pg_id(p),
coll(p),
lock();
// When recovery is initiated by a repair, that flag is left on
state_clear(PG_STATE_REPAIR);
- if (deleting) {
+ if (recovery_state.is_deleting()) {
unlock();
return;
}
{
ch->flush();
lock();
+ recovery_state.shutdown();
on_shutdown();
unlock();
}
dirty_info = true;
dirty_big_info = true;
} else {
- deleted = true;
+ recovery_state.set_delete_complete();
// cancel reserver here, since the PG is about to get deleted and the
// exit() methods don't run when that happens.
void PrimaryLogPG::snap_trimmer(epoch_t queued)
{
- if (deleting || pg_has_reset_since(queued)) {
+ if (recovery_state.is_deleting() || pg_has_reset_since(queued)) {
return;
}
--active_pushes;
// requeue an active chunky scrub waiting on recovery ops
- if (!deleting && active_pushes == 0
+ if (!recovery_state.is_deleting() && active_pushes == 0
&& scrubber.is_chunky_scrub_active()) {
requeue_scrub(ops_blocked_by_scrub());
}
--active_pushes;
// requeue an active chunky scrub waiting on recovery ops
- if (!deleting && active_pushes == 0 &&
+ if (!recovery_state.is_deleting() && active_pushes == 0 &&
scrubber.active_rep_scrub && static_cast<const MOSDRepScrub*>(
scrubber.active_rep_scrub->get_req())->chunky) {
auto& op = scrubber.active_rep_scrub;
{
dout(10) << __func__ << dendl;
- // handles queue races
- deleting = true;
-
if (recovery_queued) {
recovery_queued = false;
osd->clear_queued_recovery(this);
bool recovery_started = false;
ceph_assert(is_primary());
ceph_assert(is_peered());
- ceph_assert(!is_deleting());
+ ceph_assert(!recovery_state.is_deleting());
ceph_assert(recovery_queued);
recovery_queued = false;
return true;
}
- ceph_assert(!deleting);
+ ceph_assert(!recovery_state.is_deleting());
if (agent_state->is_idle()) {
dout(10) << __func__ << " idle, stopping" << dendl;