]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd: Convert do_recovery() from bool to stop_iteration
authorMatan Breizman <mbreizma@redhat.com>
Wed, 16 Apr 2025 12:24:31 +0000 (12:24 +0000)
committerMatan Breizman <mbreizma@redhat.com>
Sun, 4 May 2025 14:32:11 +0000 (14:32 +0000)
Signed-off-by: Matan Breizman <mbreizma@redhat.com>
src/crimson/osd/osd_operations/background_recovery.cc
src/crimson/osd/osd_operations/background_recovery.h
src/crimson/osd/pg_recovery.cc
src/crimson/osd/pg_recovery.h

index 20e80bf1b84ecbb0ec063968b0b15d57a95ddc7c..eedfa5fc37fa251f27ab2b46c329ed37e094d694 100644 (file)
@@ -81,14 +81,8 @@ seastar::future<> BackgroundRecoveryT<T>::start()
       return interruptor::with_interruption([this] {
        return do_recovery();
       }, [](std::exception_ptr) {
-       return seastar::make_ready_future<bool>(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>(seastar::stop_iteration::yes);
+      }, pg, epoch_started);
     });
   });
 }
@@ -105,13 +99,13 @@ UrgentRecovery::UrgentRecovery(
 {
 }
 
-UrgentRecovery::interruptible_future<bool>
+UrgentRecovery::interruptible_future<seastar::stop_iteration>
 UrgentRecovery::do_recovery()
 {
   LOG_PREFIX(UrgentRecovery::do_recovery);
   DEBUGDPPI("{}: {}", *pg, __func__, *this);
   if (pg->has_reset_since(epoch_started)) {
-    return seastar::make_ready_future<bool>(false);
+    return seastar::make_ready_future<seastar::stop_iteration>(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<bool>(false);
+      return seastar::make_ready_future<seastar::stop_iteration>(seastar::stop_iteration::yes);
     });
   });
 }
@@ -157,13 +151,13 @@ PglogBasedRecovery::PglogBasedRecovery(
       delay)
 {}
 
-PglogBasedRecovery::interruptible_future<bool>
+PglogBasedRecovery::interruptible_future<seastar::stop_iteration>
 PglogBasedRecovery::do_recovery()
 {
   LOG_PREFIX(PglogBasedRecovery::do_recovery);
   DEBUGDPPI("{}: {}", *pg, __func__, *this);
   if (pg->has_reset_since(epoch_started)) {
-    return seastar::make_ready_future<bool>(false);
+    return seastar::make_ready_future<seastar::stop_iteration>(seastar::stop_iteration::yes);
   }
   return pg->find_unfound(epoch_started
   ).then_interruptible([this] {
index 2b3dbb121ae9f0598d6985eaf28f31b3bc7c411c..e69fe80c0771582e66920bb38e32dfe4179a857a 100644 (file)
@@ -44,7 +44,7 @@ private:
       scheduler_class
     };
   }
-  using do_recovery_ret_t = typename PhasedOperationT<T>::template interruptible_future<bool>;
+  using do_recovery_ret_t = typename PhasedOperationT<T>::template interruptible_future<seastar::stop_iteration>;
   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<bool> do_recovery() override;
+  interruptible_future<seastar::stop_iteration> do_recovery() override;
   const hobject_t soid;
   const eversion_t need;
 };
@@ -100,7 +100,7 @@ public:
     return epoch_started;
   }
 private:
-  interruptible_future<bool> do_recovery() override;
+  interruptible_future<seastar::stop_iteration> do_recovery() override;
   bool cancelled = false;
 };
 
index b890c55312e08d11da6608ba2588390dae61be64..8d14cb77eaa2770843084ad6b521323c6b0d7fd1 100644 (file)
@@ -40,20 +40,21 @@ void PGRecovery::start_pglogbased_recovery()
   pg->set_pglog_based_recovery_op(op.get());
 }
 
-PGRecovery::interruptible_future<bool>
+PGRecovery::interruptible_future<seastar::stop_iteration>
 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(
index 015e5114518c2abe0bc030ae651569e45b5d4744..9bddbcf75ec87b25a7753d25462eddaf5301b1f6 100644 (file)
@@ -34,7 +34,7 @@ public:
   virtual ~PGRecovery() {}
   void start_pglogbased_recovery();
 
-  interruptible_future<bool> start_recovery_ops(
+  interruptible_future<seastar::stop_iteration> start_recovery_ops(
     RecoveryBackend::RecoveryBlockingEvent::TriggerI&,
     crimson::osd::PglogBasedRecovery &recover_op,
     size_t max_to_start);