IRef ref = this;
return interruptor::with_interruption(
- [this, ec_backend=dynamic_cast<ECBackend*>(&pg->get_backend())] {
+ [this, pg, ec_backend=dynamic_cast<ECBackend*>(&pg->get_backend())] {
assert(ec_backend);
return std::visit(overloaded{
- [ec_backend, this] (Ref<MOSDECSubOpWrite> concrete_req) {
- return ec_backend->handle_rep_write_op(
- std::move(concrete_req)
- ).handle_error_interruptible(crimson::ct_error::assert_all{});
+ [pg] (Ref<MOSDECSubOpWrite> concrete_req) {
+ return pg->handle_rep_write_op(std::move(concrete_req));
},
- [ec_backend, this] (Ref<MOSDECSubOpWriteReply> concrete_req) {
+ [ec_backend] (Ref<MOSDECSubOpWriteReply> concrete_req) {
return ec_backend->handle_rep_write_reply(
std::move(concrete_req)
).handle_error_interruptible(crimson::ct_error::assert_all{});
},
- [ec_backend, this] (Ref<MOSDECSubOpRead> concrete_req) {
- return ec_backend->handle_rep_read_op(
- std::move(concrete_req)
- ).handle_error_interruptible(crimson::ct_error::assert_all{});
+ [pg] (Ref<MOSDECSubOpRead> concrete_req) {
+ return pg->handle_rep_read_op(std::move(concrete_req));
},
- [ec_backend, this] (Ref<MOSDECSubOpReadReply> concrete_req) {
+ [ec_backend] (Ref<MOSDECSubOpReadReply> concrete_req) {
return ec_backend->handle_rep_read_reply(
std::move(concrete_req)
).handle_error_interruptible(crimson::ct_error::assert_all{});
#include "crimson/net/Messenger.h"
#include "crimson/os/cyanstore/cyan_store.h"
#include "crimson/os/futurized_collection.h"
+#include "crimson/osd/ec_backend.h"
#include "crimson/osd/exceptions.h"
#include "crimson/osd/pg_meta.h"
#include "crimson/osd/pg_backend.h"
}
}
+PG::interruptible_future<> PG::handle_rep_write_op(Ref<MOSDECSubOpWrite> m)
+{
+ auto* ec_backend=dynamic_cast<::ECBackend*>(&get_backend());
+ assert(ec_backend);
+ return ec_backend->handle_rep_write_op(
+ std::move(m)
+ ).handle_error_interruptible(crimson::ct_error::assert_all{});
+}
+
+PG::interruptible_future<> PG::handle_rep_read_op(Ref<MOSDECSubOpRead> m)
+{
+ auto* ec_backend=dynamic_cast<::ECBackend*>(&get_backend());
+ assert(ec_backend);
+ return ec_backend->handle_rep_read_op(
+ std::move(m)
+ ).handle_error_interruptible(crimson::ct_error::assert_all{});
+}
+
PG::interruptible_future<> PG::do_update_log_missing(
Ref<MOSDPGUpdateLogMissing> m,
crimson::net::ConnectionXcoreRef conn)