From 798a14a0f7c48daf203b31fd64de0c4a502053e5 Mon Sep 17 00:00:00 2001 From: Matan Breizman Date: Wed, 16 Apr 2025 12:24:31 +0000 Subject: [PATCH] crimson/osd: Convert do_recovery() from bool to stop_iteration Signed-off-by: Matan Breizman --- .../osd/osd_operations/background_recovery.cc | 20 +++++++------------ .../osd/osd_operations/background_recovery.h | 6 +++--- src/crimson/osd/pg_recovery.cc | 11 +++++----- src/crimson/osd/pg_recovery.h | 2 +- 4 files changed, 17 insertions(+), 22 deletions(-) diff --git a/src/crimson/osd/osd_operations/background_recovery.cc b/src/crimson/osd/osd_operations/background_recovery.cc index 20e80bf1b84ec..eedfa5fc37fa2 100644 --- a/src/crimson/osd/osd_operations/background_recovery.cc +++ b/src/crimson/osd/osd_operations/background_recovery.cc @@ -81,14 +81,8 @@ seastar::future<> BackgroundRecoveryT::start() return interruptor::with_interruption([this] { return do_recovery(); }, [](std::exception_ptr) { - return seastar::make_ready_future(false); - }, pg, epoch_started).then([](bool do_recovery) { - if (do_recovery) { - return seastar::stop_iteration::no; - } else { - return seastar::stop_iteration::yes; - } - }); + return seastar::make_ready_future(seastar::stop_iteration::yes); + }, pg, epoch_started); }); }); } @@ -105,13 +99,13 @@ UrgentRecovery::UrgentRecovery( { } -UrgentRecovery::interruptible_future +UrgentRecovery::interruptible_future UrgentRecovery::do_recovery() { LOG_PREFIX(UrgentRecovery::do_recovery); DEBUGDPPI("{}: {}", *pg, __func__, *this); if (pg->has_reset_since(epoch_started)) { - return seastar::make_ready_future(false); + return seastar::make_ready_future(seastar::stop_iteration::yes); } return pg->find_unfound(epoch_started @@ -121,7 +115,7 @@ UrgentRecovery::do_recovery() return pg->get_recovery_handler()->recover_missing( trigger, soid, need, false); }).then_interruptible([] { - return seastar::make_ready_future(false); + return seastar::make_ready_future(seastar::stop_iteration::yes); }); }); } @@ -157,13 +151,13 @@ PglogBasedRecovery::PglogBasedRecovery( delay) {} -PglogBasedRecovery::interruptible_future +PglogBasedRecovery::interruptible_future PglogBasedRecovery::do_recovery() { LOG_PREFIX(PglogBasedRecovery::do_recovery); DEBUGDPPI("{}: {}", *pg, __func__, *this); if (pg->has_reset_since(epoch_started)) { - return seastar::make_ready_future(false); + return seastar::make_ready_future(seastar::stop_iteration::yes); } return pg->find_unfound(epoch_started ).then_interruptible([this] { diff --git a/src/crimson/osd/osd_operations/background_recovery.h b/src/crimson/osd/osd_operations/background_recovery.h index 2b3dbb121ae9f..e69fe80c07715 100644 --- a/src/crimson/osd/osd_operations/background_recovery.h +++ b/src/crimson/osd/osd_operations/background_recovery.h @@ -44,7 +44,7 @@ private: scheduler_class }; } - using do_recovery_ret_t = typename PhasedOperationT::template interruptible_future; + using do_recovery_ret_t = typename PhasedOperationT::template interruptible_future; virtual do_recovery_ret_t do_recovery() = 0; ShardServices &ss; const crimson::osd::scheduler::scheduler_class_t scheduler_class; @@ -71,7 +71,7 @@ public: private: void dump_detail(Formatter* f) const final; - interruptible_future do_recovery() override; + interruptible_future do_recovery() override; const hobject_t soid; const eversion_t need; }; @@ -100,7 +100,7 @@ public: return epoch_started; } private: - interruptible_future do_recovery() override; + interruptible_future do_recovery() override; bool cancelled = false; }; diff --git a/src/crimson/osd/pg_recovery.cc b/src/crimson/osd/pg_recovery.cc index b890c55312e08..8d14cb77eaa27 100644 --- a/src/crimson/osd/pg_recovery.cc +++ b/src/crimson/osd/pg_recovery.cc @@ -40,20 +40,21 @@ void PGRecovery::start_pglogbased_recovery() pg->set_pglog_based_recovery_op(op.get()); } -PGRecovery::interruptible_future +PGRecovery::interruptible_future PGRecovery::start_recovery_ops( RecoveryBackend::RecoveryBlockingEvent::TriggerI& trigger, PglogBasedRecovery &recover_op, size_t max_to_start) { LOG_PREFIX(PGRecovery::start_recovery_ops); + assert(pg->is_primary()); assert(pg->is_peered()); if (pg->has_reset_since(recover_op.get_epoch_started()) || recover_op.is_cancelled()) { DEBUGDPP("recovery {} cancelled.", pg->get_pgid(), recover_op); - co_return false; + co_return seastar::stop_iteration::yes; } ceph_assert(pg->is_recovering()); @@ -79,7 +80,7 @@ PGRecovery::start_recovery_ops( if (pg->has_reset_since(recover_op.get_epoch_started()) || recover_op.is_cancelled()) { DEBUGDPP("recovery {} cancelled.", pg->get_pgid(), recover_op); - co_return false; + co_return seastar::stop_iteration::yes; } ceph_assert(pg->is_recovering()); ceph_assert(!pg->is_backfilling()); @@ -95,9 +96,9 @@ PGRecovery::start_recovery_ops( } else { all_replicas_recovered(); } - co_return false; + co_return seastar::stop_iteration::yes; } - co_return true; + co_return seastar::stop_iteration::no; } size_t PGRecovery::start_primary_recovery_ops( diff --git a/src/crimson/osd/pg_recovery.h b/src/crimson/osd/pg_recovery.h index 015e5114518c2..9bddbcf75ec87 100644 --- a/src/crimson/osd/pg_recovery.h +++ b/src/crimson/osd/pg_recovery.h @@ -34,7 +34,7 @@ public: virtual ~PGRecovery() {} void start_pglogbased_recovery(); - interruptible_future start_recovery_ops( + interruptible_future start_recovery_ops( RecoveryBackend::RecoveryBlockingEvent::TriggerI&, crimson::osd::PglogBasedRecovery &recover_op, size_t max_to_start); -- 2.39.5