From 38c7fcf0abd55c26e6f34c8bdb8dcaaa75ed9651 Mon Sep 17 00:00:00 2001 From: Xuehan Xu Date: Mon, 25 Aug 2025 07:09:12 +0000 Subject: [PATCH] crimson/osd/recovery_backend: interrupt all recovery_waiter unconditionally when cleaning up the recovery backend All recovery_waiter will cleared when the recovery backend is cleaned up, so all of them should be interrupted. Fixes: https://tracker.ceph.com/issues/72706 Signed-off-by: Xuehan Xu --- src/crimson/osd/recovery_backend.cc | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/crimson/osd/recovery_backend.cc b/src/crimson/osd/recovery_backend.cc index d27b231e64d..c47f26335be 100644 --- a/src/crimson/osd/recovery_backend.cc +++ b/src/crimson/osd/recovery_backend.cc @@ -55,15 +55,12 @@ void RecoveryBackend::clean_up(ceph::os::Transaction& t, replica_push_targets.clear(); for (auto& [soid, recovery_waiter] : recovering) { - if ((recovery_waiter->pull_info - && recovery_waiter->pull_info->is_complete()) - || (!recovery_waiter->pull_info - && recovery_waiter->obc && recovery_waiter->obc->obs.exists)) { + if (recovery_waiter->obc) { recovery_waiter->obc->interrupt( ::crimson::common::actingset_changed( pg.is_primary())); - recovery_waiter->interrupt(why); } + recovery_waiter->interrupt(why); } recovering.clear(); } -- 2.39.5