From: Radosław Zarzyński Date: Tue, 1 Aug 2023 13:52:08 +0000 (+0200) Subject: crimson/osd: wire the EC-specific messages up X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6c0e27a18175f5fd3da301b718aa07f674d855f9;p=ceph-ci.git crimson/osd: wire the EC-specific messages up Signed-off-by: Radosław Zarzyński --- diff --git a/src/crimson/osd/ec_backend.cc b/src/crimson/osd/ec_backend.cc index 85bcb51e786..2f088d7e123 100644 --- a/src/crimson/osd/ec_backend.cc +++ b/src/crimson/osd/ec_backend.cc @@ -38,4 +38,28 @@ ECBackend::submit_transaction(const std::set &pg_shards, return make_ready_future(seastar::now(), seastar::now()); } +ECBackend::write_iertr::future<> +ECBackend::handle_rep_write_op(Ref) +{ + return write_iertr::now(); +} + +ECBackend::write_iertr::future<> +ECBackend::handle_rep_write_reply(Ref) +{ + return write_iertr::now(); } + +ECBackend::ll_read_ierrorator::future<> +ECBackend::handle_rep_read_op(Ref m) +{ + return ll_read_ierrorator::now(); +} + +ECBackend::ll_read_ierrorator::future<> +ECBackend::handle_rep_read_reply(Ref) +{ + return ll_read_ierrorator::now(); +} + +} // namespace crimson::osd diff --git a/src/crimson/osd/ec_backend.h b/src/crimson/osd/ec_backend.h index 398d878cfc7..bcf433c4611 100644 --- a/src/crimson/osd/ec_backend.h +++ b/src/crimson/osd/ec_backend.h @@ -6,6 +6,10 @@ #include #include #include "include/buffer_fwd.h" +#include "messages/MOSDECSubOpWrite.h" +#include "messages/MOSDECSubOpWriteReply.h" +#include "messages/MOSDECSubOpRead.h" +#include "messages/MOSDECSubOpReadReply.h" #include "osd/osd_types.h" #include "pg_backend.h" @@ -24,6 +28,11 @@ public: return seastar::now(); } void on_actingset_changed(bool same_primary) final {} + + write_iertr::future<> handle_rep_write_op(Ref); + write_iertr::future<> handle_rep_write_reply(Ref); + ll_read_ierrorator::future<> handle_rep_read_op(Ref); + ll_read_ierrorator::future<> handle_rep_read_reply(Ref); private: ll_read_ierrorator::future _read(const hobject_t& hoid, uint64_t off, uint64_t len, uint32_t flags) override; diff --git a/src/crimson/osd/osd.cc b/src/crimson/osd/osd.cc index 7b957028330..749b98bd59d 100644 --- a/src/crimson/osd/osd.cc +++ b/src/crimson/osd/osd.cc @@ -1008,13 +1008,13 @@ OSD::do_ms_dispatch( return handle_pg_pct(conn, boost::static_pointer_cast< MOSDPGPCT>(m)); case MSG_OSD_EC_WRITE: - [[fallthrough]]; + return handle_some_ec_messages(conn, boost::static_pointer_cast(m)); case MSG_OSD_EC_WRITE_REPLY: - [[fallthrough]]; + return handle_some_ec_messages(conn, boost::static_pointer_cast(m)); case MSG_OSD_EC_READ: - [[fallthrough]]; + return handle_some_ec_messages(conn, boost::static_pointer_cast(m)); case MSG_OSD_EC_READ_REPLY: - return handle_some_ec_messages(conn, m); + return handle_some_ec_messages(conn, boost::static_pointer_cast(m)); #if 0 case MSG_OSD_PG_PUSH: [[fallthrough]]; diff --git a/src/crimson/osd/osd_operations/ecrep_request.cc b/src/crimson/osd/osd_operations/ecrep_request.cc index 4e9ed4808f8..4b359568f36 100644 --- a/src/crimson/osd/osd_operations/ecrep_request.cc +++ b/src/crimson/osd/osd_operations/ecrep_request.cc @@ -5,6 +5,7 @@ #include "common/Formatter.h" +#include "crimson/osd/ec_backend.h" #include "crimson/osd/osd.h" #include "crimson/osd/osd_connection_priv.h" #include "crimson/osd/osd_operation_external_tracking.h" @@ -62,8 +63,30 @@ seastar::future<> ECRepRequest::with_pg( logger().debug("{}: ECRepRequest::with_pg", *this); IRef ref = this; - return interruptor::with_interruption([this, pg] { - return interruptor::now(); + return interruptor::with_interruption( + [this, ec_backend=dynamic_cast(&pg->get_backend())] { + assert(ec_backend); + return std::visit(overloaded{ + [ec_backend, this] (Ref concrete_req) { + return ec_backend->handle_rep_write_op( + std::move(concrete_req) + ).handle_error_interruptible(crimson::ct_error::assert_all{}); + }, + [ec_backend, this] (Ref 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 concrete_req) { + return ec_backend->handle_rep_read_op( + std::move(concrete_req) + ).handle_error_interruptible(crimson::ct_error::assert_all{}); + }, + [ec_backend, this] (Ref concrete_req) { + return ec_backend->handle_rep_read_reply( + std::move(concrete_req) + ).handle_error_interruptible(crimson::ct_error::assert_all{}); + }}, req); }, [ref, this](std::exception_ptr) { logger().debug("{}: ECRepRequest::exception handling", *this); return seastar::now(); diff --git a/src/crimson/osd/osd_operations/ecrep_request.h b/src/crimson/osd/osd_operations/ecrep_request.h index 7192f22b35b..1584558f182 100644 --- a/src/crimson/osd/osd_operations/ecrep_request.h +++ b/src/crimson/osd/osd_operations/ecrep_request.h @@ -11,6 +11,10 @@ #include "crimson/osd/osd_operations/client_request.h" #include "crimson/osd/pg_map.h" #include "crimson/common/type_helpers.h" +#include "messages/MOSDECSubOpWrite.h" +#include "messages/MOSDECSubOpWriteReply.h" +#include "messages/MOSDECSubOpRead.h" +#include "messages/MOSDECSubOpReadReply.h" namespace ceph {