BlockingEvent::ExitBarrierEvent::Backend,
ClientRequest::PGPipeline::RecoverMissingSnaps::BlockingEvent::Backend,
ClientRequest::PGPipeline::GetOBC::BlockingEvent::Backend,
+ ClientRequest::PGPipeline::LockOBC::BlockingEvent::Backend,
+ ClientRequest::PGPipeline::LockOBC::BlockingEvent::ExitBarrierEvent::Backend,
ClientRequest::PGPipeline::Process::BlockingEvent::Backend,
ClientRequest::PGPipeline::WaitRepop::BlockingEvent::Backend,
ClientRequest::PGPipeline::WaitRepop::BlockingEvent::ExitBarrierEvent::Backend,
const ClientRequest::PGPipeline::GetOBC& blocker) override {
}
+ void handle(ClientRequest::PGPipeline::LockOBC::BlockingEvent& ev,
+ const Operation& op,
+ const ClientRequest::PGPipeline::LockOBC& blocker) override {
+ }
+
+ void handle(ClientRequest::PGPipeline::LockOBC::BlockingEvent::ExitBarrierEvent& ev,
+ const Operation& op) override {
+ }
+
void handle(ClientRequest::PGPipeline::Process::BlockingEvent& ev,
const Operation& op,
const ClientRequest::PGPipeline::Process& blocker) override {
BlockingEvent::ExitBarrierEvent::Backend,
ClientRequest::PGPipeline::RecoverMissingSnaps::BlockingEvent::Backend,
ClientRequest::PGPipeline::GetOBC::BlockingEvent::Backend,
+ ClientRequest::PGPipeline::LockOBC::BlockingEvent::Backend,
+ ClientRequest::PGPipeline::LockOBC::BlockingEvent::ExitBarrierEvent::Backend,
ClientRequest::PGPipeline::Process::BlockingEvent::Backend,
ClientRequest::PGPipeline::WaitRepop::BlockingEvent::Backend,
ClientRequest::PGPipeline::WaitRepop::BlockingEvent::ExitBarrierEvent::Backend,
const ClientRequest::PGPipeline::GetOBC& blocker) override {
}
+ void handle(ClientRequest::PGPipeline::LockOBC::BlockingEvent& ev,
+ const Operation& op,
+ const ClientRequest::PGPipeline::LockOBC& blocker) override {
+ }
+
+ void handle(ClientRequest::PGPipeline::LockOBC::BlockingEvent::ExitBarrierEvent& ev,
+ const Operation& op) override {
+ }
+
void handle(ClientRequest::PGPipeline::Process::BlockingEvent& ev,
const Operation& op,
const ClientRequest::PGPipeline::Process& blocker) override {
DEBUGDPP("{}.{}: past scrub blocker, getting obc",
*pg, *this, this_instance_id);
+ // call with_locked_obc() in order, but wait concurrently for loading.
+ ihref.enter_stage_sync(
+ client_pp(*pg).lock_obc, *this);
auto process = pg->with_locked_obc(
m->get_hobj(), op_info,
[FNAME, this, pg, this_instance_id, &ihref] (
PGPipeline::RecoverMissingSnaps::BlockingEvent,
scrub::PGScrubber::BlockingEvent,
PGPipeline::GetOBC::BlockingEvent,
+ PGPipeline::LockOBC::BlockingEvent,
PGPipeline::Process::BlockingEvent,
PGPipeline::WaitRepop::BlockingEvent,
PGPipeline::SendReply::BlockingEvent,
[[maybe_unused]] const int ret = op_info.set_from_op(
std::as_const(osd_ops), pg->get_pgid().pgid, *pg->get_osdmap());
assert(ret == 0);
+ // call with_locked_obc() in order, but wait concurrently for loading.
+ enter_stage_sync(client_pp().lock_obc);
return pg->with_locked_obc(get_target_oid(), op_info,
[&osd_ops, this](auto, auto obc) {
return enter_stage<interruptor>(client_pp().process