]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/osd: add the infra for backend-agnostic recovery ops.
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 10 Mar 2020 22:49:27 +0000 (23:49 +0100)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 7 Jul 2020 10:46:10 +0000 (12:46 +0200)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/crimson/osd/recovery_backend.cc
src/crimson/osd/recovery_backend.h
src/crimson/osd/replicated_recovery_backend.cc

index af31db7d44e154918e47e4b6abce780aef9da048..fabbbffdf37b54e66401c02bc5df501a356f88d0 100644 (file)
@@ -1,10 +1,13 @@
 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
 // vim: ts=8 sw=2 smarttab
 
+#include <fmt/format.h>
+
 #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<MOSDFastDispatchOp> m)
+{
+  switch (m->get_header().type) {
+  default:
+    return seastar::make_exception_future<>(
+       std::invalid_argument(fmt::format("invalid request type: {}",
+                                         m->get_header().type)));
+  }
+}
index f5853c4da071c92ae80c82f5aeb37fe198f695f4..2465ec46280f1b7ec8ad17e369acaddcbf36d7a0 100644 (file)
@@ -47,7 +47,7 @@ public:
   }
 
   virtual seastar::future<> handle_recovery_op(
-    Ref<MOSDFastDispatchOp> m) = 0;
+    Ref<MOSDFastDispatchOp> m);
 
   virtual seastar::future<> recover_object(
     const hobject_t& soid,
index 3bf287813ca7ad6c2d6ed6cc7b1a41052dcb3a03..8f60ab61e8ac3a7f7bbb071f061d7c9065ef5432 100644 (file)
@@ -1082,9 +1082,8 @@ seastar::future<> ReplicatedRecoveryBackend::handle_recovery_op(Ref<MOSDFastDisp
     return handle_recovery_delete_reply(
        boost::static_pointer_cast<MOSDPGRecoveryDeleteReply>(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));
   }
 }