CommonOBCPipeline::WaitRepop::BlockingEvent::Backend,
CommonOBCPipeline::WaitRepop::BlockingEvent::ExitBarrierEvent::Backend,
CommonOBCPipeline::SendReply::BlockingEvent::Backend,
- PGRepopPipeline::Process::BlockingEvent::Backend
+ PGRepopPipeline::Process::BlockingEvent::Backend,
+ PGRepopPipeline::WaitCommit::BlockingEvent::Backend,
+ PGRepopPipeline::WaitCommit::BlockingEvent::ExitBarrierEvent::Backend,
+ PGRepopPipeline::SendReply::BlockingEvent::Backend
{
void handle(ClientRequest::StartEvent&,
const Operation&) override {}
const PGRepopPipeline::Process& blocker) override {
}
+ void handle(PGRepopPipeline::WaitCommit::BlockingEvent& ev,
+ const Operation& op,
+ const PGRepopPipeline::WaitCommit& blocker) override {
+ }
+
+ void handle(PGRepopPipeline::WaitCommit::BlockingEvent::ExitBarrierEvent& ev,
+ const Operation& op) override {
+ }
+
+ void handle(PGRepopPipeline::SendReply::BlockingEvent& ev,
+ const Operation& op,
+ const PGRepopPipeline::SendReply& blocker) override {
+ }
+
void handle(ClientRequest::CompletionEvent&,
const Operation&) override {}
CommonOBCPipeline::WaitRepop::BlockingEvent::Backend,
CommonOBCPipeline::WaitRepop::BlockingEvent::ExitBarrierEvent::Backend,
CommonOBCPipeline::SendReply::BlockingEvent::Backend,
- PGRepopPipeline::Process::BlockingEvent::Backend
+ PGRepopPipeline::Process::BlockingEvent::Backend,
+ PGRepopPipeline::WaitCommit::BlockingEvent::Backend,
+ PGRepopPipeline::WaitCommit::BlockingEvent::ExitBarrierEvent::Backend,
+ PGRepopPipeline::SendReply::BlockingEvent::Backend
{
void handle(ClientRequest::StartEvent&,
const Operation&) override {}
const PGRepopPipeline::Process& blocker) override {
}
+ void handle(PGRepopPipeline::WaitCommit::BlockingEvent& ev,
+ const Operation& op,
+ const PGRepopPipeline::WaitCommit& blocker) override {
+ }
+
+ void handle(PGRepopPipeline::WaitCommit::BlockingEvent::ExitBarrierEvent& ev,
+ const Operation& op) override {
+ }
+
+ void handle(PGRepopPipeline::SendReply::BlockingEvent& ev,
+ const Operation& op,
+ const PGRepopPipeline::SendReply& blocker) override {
+ }
+
+
void handle(ClientRequest::CompletionEvent&, const Operation& op) override {
if (crimson::common::local_conf()->osd_op_history_size) {
to_client_request(op).put_historic();
auto [commit_fut, reply] = co_await pg->handle_rep_op(req);
+ // Transitions from OrderedExclusive->OrderedConcurrent cannot block
+ this->template enter_stage_sync(repop_pipeline(*pg).wait_commit);
+
co_await std::move(commit_fut);
+ co_await this->template enter_stage<interruptor>(
+ repop_pipeline(*pg).send_reply);
+
co_await interruptor::make_interruptible(
pg->shard_services.send_to_osd(
req->from.osd, std::move(reply), pg->get_osdmap_epoch())
ConnectionPipeline::GetPGMapping::BlockingEvent,
PerShardPipeline::CreateOrWaitPG::BlockingEvent,
PGRepopPipeline::Process::BlockingEvent,
+ PGRepopPipeline::WaitCommit::BlockingEvent,
+ PGRepopPipeline::SendReply::BlockingEvent,
PG_OSDMapGate::OSDMapBlocker::BlockingEvent,
PGMap::PGCreationBlockingEvent,
OSD_OSDMapGate::OSDMapBlocker::BlockingEvent