From: Samuel Just Date: Wed, 19 Feb 2025 03:59:14 +0000 (-0800) Subject: crimson/osd/replicated_backend: introduce replica_push_targets X-Git-Tag: testing/wip-vshankar-testing-20250407.173548-debug~53^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e9d03bc3dee80bcabe01314fa5283b8f84c6de21;p=ceph-ci.git crimson/osd/replicated_backend: introduce replica_push_targets We need a place to hold the obc for in-progress, multi message pushes on the replica side in order to lock the obc during the final commit. This could be introduced as a ReplicatedRecoveryBackend concept, but that seems unnecessarily complicated. Signed-off-by: Samuel Just --- diff --git a/src/crimson/osd/recovery_backend.cc b/src/crimson/osd/recovery_backend.cc index 6924e26ad14..b0dbcfba983 100644 --- a/src/crimson/osd/recovery_backend.cc +++ b/src/crimson/osd/recovery_backend.cc @@ -50,6 +50,8 @@ void RecoveryBackend::clean_up(ceph::os::Transaction& t, }); clear_temp_objs(); + replica_push_targets.clear(); + for (auto& [soid, recovery_waiter] : recovering) { if ((recovery_waiter->pull_info && recovery_waiter->pull_info->is_complete()) diff --git a/src/crimson/osd/recovery_backend.h b/src/crimson/osd/recovery_backend.h index 13f35a7972b..818e85f67b1 100644 --- a/src/crimson/osd/recovery_backend.h +++ b/src/crimson/osd/recovery_backend.h @@ -272,6 +272,14 @@ protected: virtual interruptible_future<> handle_backfill_op( Ref m, crimson::net::ConnectionXcoreRef conn); + + /** + * replica_push_targets + * + * Holds obc on replica for in-progress pushes, see + * ReplicatedRecoveryBackend::handle_push + */ + std::map replica_push_targets; private: void handle_backfill_finish( MOSDPGBackfill& m,