return make_ready_future<rep_op_ret_t>(seastar::now(), seastar::now());
}
+ECBackend::write_iertr::future<>
+ECBackend::handle_rep_write_op(Ref<MOSDECSubOpWrite>)
+{
+ return write_iertr::now();
+}
+
+ECBackend::write_iertr::future<>
+ECBackend::handle_rep_write_reply(Ref<MOSDECSubOpWriteReply>)
+{
+ return write_iertr::now();
}
+
+ECBackend::ll_read_ierrorator::future<>
+ECBackend::handle_rep_read_op(Ref<MOSDECSubOpRead> m)
+{
+ return ll_read_ierrorator::now();
+}
+
+ECBackend::ll_read_ierrorator::future<>
+ECBackend::handle_rep_read_reply(Ref<MOSDECSubOpReadReply>)
+{
+ return ll_read_ierrorator::now();
+}
+
+} // namespace crimson::osd
#include <boost/intrusive_ptr.hpp>
#include <seastar/core/future.hh>
#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"
return seastar::now();
}
void on_actingset_changed(bool same_primary) final {}
+
+ write_iertr::future<> handle_rep_write_op(Ref<MOSDECSubOpWrite>);
+ write_iertr::future<> handle_rep_write_reply(Ref<MOSDECSubOpWriteReply>);
+ ll_read_ierrorator::future<> handle_rep_read_op(Ref<MOSDECSubOpRead>);
+ ll_read_ierrorator::future<> handle_rep_read_reply(Ref<MOSDECSubOpReadReply>);
private:
ll_read_ierrorator::future<ceph::bufferlist>
_read(const hobject_t& hoid, uint64_t off, uint64_t len, uint32_t flags) override;
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<MOSDECSubOpWrite>(m));
case MSG_OSD_EC_WRITE_REPLY:
- [[fallthrough]];
+ return handle_some_ec_messages(conn, boost::static_pointer_cast<MOSDECSubOpWriteReply>(m));
case MSG_OSD_EC_READ:
- [[fallthrough]];
+ return handle_some_ec_messages(conn, boost::static_pointer_cast<MOSDECSubOpRead>(m));
case MSG_OSD_EC_READ_REPLY:
- return handle_some_ec_messages(conn, m);
+ return handle_some_ec_messages(conn, boost::static_pointer_cast<MOSDECSubOpReadReply>(m));
#if 0
case MSG_OSD_PG_PUSH:
[[fallthrough]];
#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"
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<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{});
+ },
+ [ec_backend, this] (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{});
+ },
+ [ec_backend, this] (Ref<MOSDECSubOpReadReply> 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();
#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 {