});
}
-BackfillRecovery::BackfillRecoveryPipeline &BackfillRecovery::bp(PG &pg)
+PGPeeringPipeline &BackfillRecovery::bp(PG &pg)
{
- return pg.backfill_pipeline;
+ return pg.peering_request_pg_pipeline;
}
BackfillRecovery::interruptible_future<bool>
#include "crimson/osd/osd_operation.h"
#include "crimson/osd/recovery_backend.h"
#include "crimson/common/type_helpers.h"
+#include "crimson/osd/osd_operations/peering_event.h"
+#include "crimson/osd/pg.h"
namespace crimson::osd {
class PG;
class BackfillRecovery final : public BackgroundRecoveryT<BackfillRecovery> {
public:
- class BackfillRecoveryPipeline {
- struct Process : OrderedExclusivePhaseT<Process> {
- static constexpr auto type_name = "BackfillRecovery::PGPipeline::process";
- } process;
- friend class BackfillRecovery;
- template <class T>
- friend class PeeringEvent;
- friend class LocalPeeringEvent;
- friend class RemotePeeringEvent;
- };
template <class EventT>
BackfillRecovery(
epoch_t epoch_started,
const EventT& evt);
- static BackfillRecoveryPipeline &bp(PG &pg);
PipelineHandle& get_handle() { return handle; }
std::tuple<
OperationThrottler::BlockingEvent,
- BackfillRecoveryPipeline::Process::BlockingEvent
+ PGPeeringPipeline::Process::BlockingEvent
> tracking_events;
private:
boost::intrusive_ptr<const boost::statechart::event_base> evt;
PipelineHandle handle;
+ static PGPeeringPipeline &bp(PG &pg);
interruptible_future<bool> do_recovery() override;
};
#include "crimson/osd/osd_operations/client_request_common.h"
#include "crimson/osd/pg.h"
+#include "crimson/osd/osd_operations/background_recovery.h"
namespace {
seastar::logger& logger() {
});
}).then_interruptible([this, pg](auto) {
return this->template enter_stage<interruptor>(pp(*pg).process);
- }).then_interruptible([this, pg] {
- // TODO: likely we should synchronize also with the pg log-based
- // recovery.
- return this->template enter_stage<interruptor>(
- BackfillRecovery::bp(*pg).process);
}).then_interruptible([this, pg, &shard_services] {
return pg->do_peering_event(evt, ctx
).then_interruptible([this, pg, &shard_services] {
#include "crimson/osd/osdmap_gate.h"
#include "crimson/osd/osd_operation.h"
-#include "crimson/osd/osd_operations/background_recovery.h"
#include "osd/osd_types.h"
#include "osd/PGPeeringEvent.h"
#include "osd/PeeringState.h"
class OSD;
class ShardServices;
class PG;
+class BackfillRecovery;
class PGPeeringPipeline {
struct AwaitMap : OrderedExclusivePhaseT<AwaitMap> {
friend class LocalPeeringEvent;
friend class RemotePeeringEvent;
friend class PGAdvanceMap;
+ friend class BackfillRecovery;
};
template <class T>
PGPeeringPipeline::AwaitMap::BlockingEvent,
PG_OSDMapGate::OSDMapBlocker::BlockingEvent,
PGPeeringPipeline::Process::BlockingEvent,
- BackfillRecovery::BackfillRecoveryPipeline::Process::BlockingEvent,
OSDPipeline::AwaitActive::BlockingEvent,
CompletionEvent
> tracking_events;
PGPeeringPipeline::AwaitMap::BlockingEvent,
PG_OSDMapGate::OSDMapBlocker::BlockingEvent,
PGPeeringPipeline::Process::BlockingEvent,
- BackfillRecovery::BackfillRecoveryPipeline::Process::BlockingEvent,
CompletionEvent
> tracking_events;
};
#include "crimson/osd/ops_executer.h"
#include "crimson/osd/osd_operations/osdop_params.h"
#include "crimson/osd/osd_operations/peering_event.h"
+#include "crimson/osd/osd_operations/background_recovery.h"
#include "crimson/osd/pg_recovery.h"
#include "crimson/osd/replicated_recovery_backend.h"
#include "crimson/osd/osd_operations/logmissing_request_reply.h"
#include "crimson/osd/osd_operations/peering_event.h"
#include "crimson/osd/osd_operations/replicated_request.h"
-#include "crimson/osd/osd_operations/background_recovery.h"
#include "crimson/osd/shard_services.h"
#include "crimson/osd/osdmap_gate.h"
#include "crimson/osd/pg_activation_blocker.h"
namespace crimson::osd {
class OpsExecuter;
+class BackfillRecovery;
class PG : public boost::intrusive_ref_counter<
PG,
}
private:
- BackfillRecovery::BackfillRecoveryPipeline backfill_pipeline;
-
friend class IOInterruptCondition;
struct log_update_t {
std::set<pg_shard_t> waiting_on;
#include "crimson/osd/pg_recovery_listener.h"
#include "crimson/osd/scheduler/scheduler.h"
#include "crimson/osd/shard_services.h"
+#include "crimson/osd/recovery_backend.h"
#include "osd/object_state.h"
+namespace crimson::osd {
+class UrgentRecovery;
+}
+
class MOSDPGBackfillRemove;
class PGBackend;
#include "crimson/osd/recovery_backend.h"
#include "crimson/osd/pg.h"
#include "crimson/osd/pg_backend.h"
+#include "crimson/osd/osd_operations/background_recovery.h"
#include "messages/MOSDFastDispatchOp.h"
#include "osd/osd_types.h"