From 6782d1df023b605b4575a3e0165de83538610cb4 Mon Sep 17 00:00:00 2001 From: Matan Breizman Date: Mon, 1 Apr 2024 08:58:48 +0000 Subject: [PATCH] crimson/osd/replicated_recovery_backend: prepare_pull to use pg_info Don't use peer's info on prepare_pull. Fixes: https://tracker.ceph.com/issues/65200 Signed-off-by: Matan Breizman (cherry picked from commit 7586abfad239d433049fb714d6fb8f2530a1b9c6) --- src/crimson/osd/replicated_recovery_backend.cc | 9 +++------ src/crimson/osd/replicated_recovery_backend.h | 3 +-- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/crimson/osd/replicated_recovery_backend.cc b/src/crimson/osd/replicated_recovery_backend.cc index a62cb793272..14e54716953 100644 --- a/src/crimson/osd/replicated_recovery_backend.cc +++ b/src/crimson/osd/replicated_recovery_backend.cc @@ -431,11 +431,9 @@ void ReplicatedRecoveryBackend::prepare_pull( const auto missing_iter = local_missing.get_items().find(soid); auto m = pg.get_missing_loc_shards(); pg_shard_t fromshard = *(m[soid].begin()); - const auto& last_backfill = - pg.get_peering_state().get_peer_info(fromshard).last_backfill; pull_op.recovery_info = - set_recovery_info(soid, head_obc->ssc, last_backfill); + set_recovery_info(soid, head_obc->ssc); pull_op.soid = soid; pull_op.recovery_progress.data_complete = false; pull_op.recovery_progress.omap_complete = @@ -452,8 +450,7 @@ void ReplicatedRecoveryBackend::prepare_pull( ObjectRecoveryInfo ReplicatedRecoveryBackend::set_recovery_info( const hobject_t& soid, - const crimson::osd::SnapSetContextRef ssc, - const hobject_t& last_backfill) + const crimson::osd::SnapSetContextRef ssc) { pg_missing_tracker_t local_missing = pg.get_local_missing(); const auto missing_iter = local_missing.get_items().find(soid); @@ -463,7 +460,7 @@ ObjectRecoveryInfo ReplicatedRecoveryBackend::set_recovery_info( assert(ssc); recovery_info.ss = ssc->snapset; auto subsets = crimson::osd::calc_clone_subsets( - ssc->snapset, soid, local_missing, last_backfill); + ssc->snapset, soid, local_missing, pg.get_info().last_backfill); crimson::osd::set_subsets(subsets, recovery_info); logger().debug("{}: pulling {}", __func__, recovery_info); ceph_assert(ssc->snapset.clone_size.count(soid.snap)); diff --git a/src/crimson/osd/replicated_recovery_backend.h b/src/crimson/osd/replicated_recovery_backend.h index aac4531ee95..adf7188c891 100644 --- a/src/crimson/osd/replicated_recovery_backend.h +++ b/src/crimson/osd/replicated_recovery_backend.h @@ -67,8 +67,7 @@ protected: eversion_t need); ObjectRecoveryInfo set_recovery_info( const hobject_t& soid, - const crimson::osd::SnapSetContextRef ssc, - const hobject_t& last_backfill); + const crimson::osd::SnapSetContextRef ssc); std::vector get_shards_to_push( const hobject_t& soid) const; interruptible_future build_push_op( -- 2.39.5