From: Radoslaw Zarzynski Date: Tue, 19 Mar 2024 16:58:45 +0000 (+0000) Subject: crimson/osd: conceptually move delete handling out of ReplicatedRecoveryBackend X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=05d8b0e98a3117dc41d3021db7b0719429893968;p=ceph-ci.git crimson/osd: conceptually move delete handling out of ReplicatedRecoveryBackend 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 --- diff --git a/src/crimson/osd/pg_recovery.h b/src/crimson/osd/pg_recovery.h index 72247b01f8d..47cf73a244f 100644 --- a/src/crimson/osd/pg_recovery.h +++ b/src/crimson/osd/pg_recovery.h @@ -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; diff --git a/src/crimson/osd/recovery_backend.cc b/src/crimson/osd/recovery_backend.cc index 16863d8077a..9da41488fd4 100644 --- a/src/crimson/osd/recovery_backend.cc +++ b/src/crimson/osd/recovery_backend.cc @@ -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(m)); + case MSG_OSD_PG_RECOVERY_DELETE_REPLY: + return handle_recovery_delete_reply( + boost::static_pointer_cast(m)); case MSG_OSD_PG_BACKFILL: return handle_backfill(*boost::static_pointer_cast(m), conn); case MSG_OSD_PG_BACKFILL_REMOVE: diff --git a/src/crimson/osd/recovery_backend.h b/src/crimson/osd/recovery_backend.h index 5acf71a5b1b..7c6a56d45d7 100644 --- a/src/crimson/osd/recovery_backend.h +++ b/src/crimson/osd/recovery_backend.h @@ -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 scan_for_backfill_primary( const hobject_t from, @@ -284,6 +285,20 @@ protected: */ std::map 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 m); + interruptible_future<> handle_recovery_delete_reply( + Ref m); + void handle_backfill_finish( MOSDPGBackfill& m, crimson::net::ConnectionXcoreRef conn); diff --git a/src/crimson/osd/replicated_recovery_backend.cc b/src/crimson/osd/replicated_recovery_backend.cc index 477f29d9ac6..00014e7212f 100644 --- a/src/crimson/osd/replicated_recovery_backend.cc +++ b/src/crimson/osd/replicated_recovery_backend.cc @@ -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 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 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(m)); - case MSG_OSD_PG_RECOVERY_DELETE: - return handle_recovery_delete( - boost::static_pointer_cast(m)); - case MSG_OSD_PG_RECOVERY_DELETE_REPLY: - return handle_recovery_delete_reply( - boost::static_pointer_cast(m)); default: // delegate backfill messages to parent class return handle_backfill_op(std::move(m), conn); diff --git a/src/crimson/osd/replicated_recovery_backend.h b/src/crimson/osd/replicated_recovery_backend.h index 30e378b2347..37e2b18239c 100644 --- a/src/crimson/osd/replicated_recovery_backend.h +++ b/src/crimson/osd/replicated_recovery_backend.h @@ -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 m); @@ -47,10 +42,6 @@ protected: Ref m); interruptible_future<> handle_push_reply( Ref m); - interruptible_future<> handle_recovery_delete( - Ref m); - interruptible_future<> handle_recovery_delete_reply( - Ref m); interruptible_future prep_push_to_replica( const hobject_t& soid, eversion_t need, @@ -107,15 +98,6 @@ protected: interruptible_future> _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(); }