]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/osd: conceptually move delete handling out of ReplicatedRecoveryBackend
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 19 Mar 2024 16:58:45 +0000 (16:58 +0000)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 27 Jan 2026 14:37:36 +0000 (14:37 +0000)
This logic is shareable between ReplicatedRecoveryBackend and
coming ECRecoveryBackend.

The switch happens currently only structural level; shuffling
betweeen source files will happen later.

Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/crimson/osd/pg_recovery.h
src/crimson/osd/recovery_backend.cc
src/crimson/osd/recovery_backend.h
src/crimson/osd/replicated_recovery_backend.cc
src/crimson/osd/replicated_recovery_backend.h

index 72247b01f8d48fa536b8ab11a0c52bac4ece7b09..47cf73a244f6428eab1c1b4efa863539bb578044 100644 (file)
@@ -98,6 +98,7 @@ private:
     const ObjectRecoveryInfo &recovery_info);
   void _committed_pushed_object(epoch_t epoch,
                                eversion_t last_complete);
+  friend class RecoveryBackend;
   friend class ReplicatedRecoveryBackend;
   friend class crimson::osd::UrgentRecovery;
 
index 16863d8077a1e5b4c733f4ca6a636129ac884c1f..9da41488fd49d930a343b84aa719e8a9e1fa4b0d 100644 (file)
@@ -447,6 +447,12 @@ RecoveryBackend::handle_backfill_op(
   crimson::net::ConnectionXcoreRef conn)
 {
   switch (m->get_header().type) {
+  case MSG_OSD_PG_RECOVERY_DELETE:
+    return handle_recovery_delete(
+       boost::static_pointer_cast<MOSDPGRecoveryDelete>(m));
+  case MSG_OSD_PG_RECOVERY_DELETE_REPLY:
+    return handle_recovery_delete_reply(
+       boost::static_pointer_cast<MOSDPGRecoveryDeleteReply>(m));
   case MSG_OSD_PG_BACKFILL:
     return handle_backfill(*boost::static_pointer_cast<MOSDPGBackfill>(m), conn);
   case MSG_OSD_PG_BACKFILL_REMOVE:
index 5acf71a5b1b2bae04f7cc3dcddb05793696760e6..7c6a56d45d7eef11ecaa7891f9630d7595242d70 100644 (file)
@@ -81,12 +81,13 @@ public:
   virtual interruptible_future<> recover_object(
     const hobject_t& soid,
     eversion_t need) = 0;
-  virtual interruptible_future<> recover_delete(
+
+  interruptible_future<> recover_delete(
     const hobject_t& soid,
-    eversion_t need) = 0;
-  virtual interruptible_future<> push_delete(
+    eversion_t need);
+  interruptible_future<> push_delete(
     const hobject_t& soid,
-    eversion_t need) = 0;
+    eversion_t need);
 
   interruptible_future<PrimaryBackfillInterval> scan_for_backfill_primary(
     const hobject_t from,
@@ -284,6 +285,20 @@ protected:
    */
   std::map<hobject_t, crimson::osd::ObjectContextRef> replica_push_targets;
 private:
+  interruptible_future<> on_local_recover_persist(
+    const hobject_t& soid,
+    const ObjectRecoveryInfo& _recovery_info,
+    bool is_delete,
+    epoch_t epoch_to_freeze);
+  interruptible_future<> local_recover_delete(
+    const hobject_t& soid,
+    eversion_t need,
+    epoch_t epoch_frozen);
+  interruptible_future<> handle_recovery_delete(
+    Ref<MOSDPGRecoveryDelete> m);
+  interruptible_future<> handle_recovery_delete_reply(
+    Ref<MOSDPGRecoveryDeleteReply> m);
+
   void handle_backfill_finish(
     MOSDPGBackfill& m,
     crimson::net::ConnectionXcoreRef conn);
index 477f29d9ac6ddff211e8179713487eb049ef9b61..00014e7212fe12c54d5e3e1d32d8e3581945005a 100644 (file)
@@ -170,7 +170,7 @@ ReplicatedRecoveryBackend::maybe_pull_missing_obj(
 }
 
 RecoveryBackend::interruptible_future<>
-ReplicatedRecoveryBackend::push_delete(
+RecoveryBackend::push_delete(
   const hobject_t& soid,
   eversion_t need)
 {
@@ -208,7 +208,7 @@ ReplicatedRecoveryBackend::push_delete(
 }
 
 RecoveryBackend::interruptible_future<>
-ReplicatedRecoveryBackend::handle_recovery_delete(
+RecoveryBackend::handle_recovery_delete(
   Ref<MOSDPGRecoveryDelete> m)
 {
   LOG_PREFIX(ReplicatedRecoveryBackend::handle_recovery_delete);
@@ -230,7 +230,7 @@ ReplicatedRecoveryBackend::handle_recovery_delete(
 }
 
 RecoveryBackend::interruptible_future<>
-ReplicatedRecoveryBackend::on_local_recover_persist(
+RecoveryBackend::on_local_recover_persist(
   const hobject_t& soid,
   const ObjectRecoveryInfo& _recovery_info,
   bool is_delete,
@@ -255,7 +255,7 @@ ReplicatedRecoveryBackend::on_local_recover_persist(
 }
 
 RecoveryBackend::interruptible_future<>
-ReplicatedRecoveryBackend::local_recover_delete(
+RecoveryBackend::local_recover_delete(
   const hobject_t& soid,
   eversion_t need,
   epoch_t epoch_to_freeze)
@@ -302,7 +302,7 @@ ReplicatedRecoveryBackend::local_recover_delete(
 }
 
 RecoveryBackend::interruptible_future<>
-ReplicatedRecoveryBackend::recover_delete(
+RecoveryBackend::recover_delete(
   const hobject_t &soid, eversion_t need)
 {
   LOG_PREFIX(ReplicatedRecoveryBackend::recover_delete);
@@ -1320,7 +1320,7 @@ void ReplicatedRecoveryBackend::submit_push_complete(
 }
 
 RecoveryBackend::interruptible_future<>
-ReplicatedRecoveryBackend::handle_recovery_delete_reply(
+RecoveryBackend::handle_recovery_delete_reply(
   Ref<MOSDPGRecoveryDeleteReply> m)
 {
   auto& p = m->objects.front();
@@ -1356,12 +1356,6 @@ ReplicatedRecoveryBackend::handle_recovery_op(
   case MSG_OSD_PG_PUSH_REPLY:
     return handle_push_reply(
        boost::static_pointer_cast<MOSDPGPushReply>(m));
-  case MSG_OSD_PG_RECOVERY_DELETE:
-    return handle_recovery_delete(
-       boost::static_pointer_cast<MOSDPGRecoveryDelete>(m));
-  case MSG_OSD_PG_RECOVERY_DELETE_REPLY:
-    return handle_recovery_delete_reply(
-       boost::static_pointer_cast<MOSDPGRecoveryDeleteReply>(m));
   default:
     // delegate backfill messages to parent class
     return handle_backfill_op(std::move(m), conn);
index 30e378b2347b6c1e40a9258b331aa72e76d55034..37e2b18239cc54465e1d6a938efd64397c90062c 100644 (file)
@@ -32,12 +32,7 @@ public:
   interruptible_future<> recover_object(
     const hobject_t& soid,
     eversion_t need) final;
-  interruptible_future<> recover_delete(
-    const hobject_t& soid,
-    eversion_t need) final;
-  interruptible_future<> push_delete(
-    const hobject_t& soid,
-    eversion_t need) final;
+
 protected:
   interruptible_future<> handle_pull(
     Ref<MOSDPGPull> m);
@@ -47,10 +42,6 @@ protected:
     Ref<MOSDPGPush> m);
   interruptible_future<> handle_push_reply(
     Ref<MOSDPGPushReply> m);
-  interruptible_future<> handle_recovery_delete(
-    Ref<MOSDPGRecoveryDelete> m);
-  interruptible_future<> handle_recovery_delete_reply(
-    Ref<MOSDPGRecoveryDeleteReply> m);
   interruptible_future<PushOp> prep_push_to_replica(
     const hobject_t& soid,
     eversion_t need,
@@ -107,15 +98,6 @@ protected:
   interruptible_future<std::optional<PushOp>> _handle_push_reply(
     pg_shard_t peer,
     const PushReplyOp &op);
-  interruptible_future<> on_local_recover_persist(
-    const hobject_t& soid,
-    const ObjectRecoveryInfo& _recovery_info,
-    bool is_delete,
-    epoch_t epoch_to_freeze);
-  interruptible_future<> local_recover_delete(
-    const hobject_t& soid,
-    eversion_t need,
-    epoch_t epoch_frozen);
   seastar::future<> on_stop() final {
     return seastar::now();
   }