From b1c62c219446fe8e3dce2a10b609900617bc779f Mon Sep 17 00:00:00 2001 From: Radoslaw Zarzynski Date: Tue, 10 Mar 2020 23:49:27 +0100 Subject: [PATCH] crimson/osd: add the infra for backend-agnostic recovery ops. Signed-off-by: Radoslaw Zarzynski --- src/crimson/osd/recovery_backend.cc | 14 ++++++++++++++ src/crimson/osd/recovery_backend.h | 2 +- src/crimson/osd/replicated_recovery_backend.cc | 5 ++--- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/crimson/osd/recovery_backend.cc b/src/crimson/osd/recovery_backend.cc index af31db7d44e..fabbbffdf37 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 f5853c4da07..2465ec46280 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 3bf287813ca..8f60ab61e8a 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)); } } -- 2.39.5