From: Radoslaw Zarzynski Date: Tue, 10 Mar 2020 22:49:27 +0000 (+0100) Subject: crimson/osd: add the infra for backend-agnostic recovery ops. X-Git-Tag: v16.1.0~1720^2~28 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b1c62c219446fe8e3dce2a10b609900617bc779f;p=ceph.git crimson/osd: add the infra for backend-agnostic recovery ops. Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/crimson/osd/recovery_backend.cc b/src/crimson/osd/recovery_backend.cc index af31db7d44e1..fabbbffdf37b 100644 --- a/src/crimson/osd/recovery_backend.cc +++ b/src/crimson/osd/recovery_backend.cc @@ -1,10 +1,13 @@ // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- // vim: ts=8 sw=2 smarttab +#include + #include "crimson/common/exception.h" #include "crimson/osd/recovery_backend.h" #include "crimson/osd/pg.h" +#include "messages/MOSDFastDispatchOp.h" #include "osd/osd_types.h" namespace { @@ -55,3 +58,14 @@ void RecoveryBackend::WaitForObjectRecovery::stop() { crimson::common::system_shutdown_exception()); } } + +seastar::future<> RecoveryBackend::handle_recovery_op( + Ref m) +{ + switch (m->get_header().type) { + default: + return seastar::make_exception_future<>( + std::invalid_argument(fmt::format("invalid request type: {}", + m->get_header().type))); + } +} diff --git a/src/crimson/osd/recovery_backend.h b/src/crimson/osd/recovery_backend.h index f5853c4da071..2465ec46280f 100644 --- a/src/crimson/osd/recovery_backend.h +++ b/src/crimson/osd/recovery_backend.h @@ -47,7 +47,7 @@ public: } virtual seastar::future<> handle_recovery_op( - Ref m) = 0; + Ref m); virtual seastar::future<> recover_object( const hobject_t& soid, diff --git a/src/crimson/osd/replicated_recovery_backend.cc b/src/crimson/osd/replicated_recovery_backend.cc index 3bf287813ca7..8f60ab61e8ac 100644 --- a/src/crimson/osd/replicated_recovery_backend.cc +++ b/src/crimson/osd/replicated_recovery_backend.cc @@ -1082,9 +1082,8 @@ seastar::future<> ReplicatedRecoveryBackend::handle_recovery_op(Ref(m)); default: - return seastar::make_exception_future<>( - std::invalid_argument(fmt::format("invalid request type: {}", - m->get_header().type))); + // delegate to parent class for handling backend-agnostic recovery ops. + return RecoveryBackend::handle_recovery_op(std::move(m)); } }