// This code has moved to after the close of recovery_state array.
// I don't think that scrub is a recovery state
- if (is_primary() && is_active() && m_scrubber->is_scrub_active()) {
+ if (is_primary() && is_active() && m_scrubber && m_scrubber->is_scrub_active()) {
m_scrubber->handle_query_state(f);
}
}
handle_query_state(f.get());
f->close_section();
- if (is_primary() && is_active()) {
+ if (is_primary() && is_active() && m_scrubber) {
m_scrubber->dump(f.get());
}
if (arg.interval != 0 && arg.interval != info.history.same_interval_since) {
r = -EAGAIN;
} else {
- bool store_queried = m_scrubber->get_store_errors(arg, result);
+ bool store_queried = m_scrubber && m_scrubber->get_store_errors(arg, result);
if (store_queried) {
encode(result, osd_op->outdata);
} else {
case MSG_OSD_SCRUB_RESERVE:
{
+ if (!m_scrubber) {
+ osd->reply_op_error(op, -EAGAIN);
+ return;
+ }
auto m = op->get_req<MOSDScrubReserve>();
switch (m->type) {
case MOSDScrubReserve::REQUEST:
void ReplicaReservations::release_replica(pg_shard_t peer, epoch_t epoch)
{
- dout(15) << __func__ << " <ReplicaReservations> release-> " << peer << dendl;
-
auto m = new MOSDScrubReserve(spg_t(m_pg->info.pgid.pgid, peer.shard), epoch,
MOSDScrubReserve::RELEASE, m_pg->pg_whoami);
m_osds->send_message_osd_cluster(peer.osd, m, epoch);