summaryrefslogtreecommitdiffstats
path: root/src/crimson/osd/recovery_backend.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/crimson/osd/recovery_backend.h')
-rw-r--r--src/crimson/osd/recovery_backend.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/crimson/osd/recovery_backend.h b/src/crimson/osd/recovery_backend.h
index b404b79751e..21154cb7106 100644
--- a/src/crimson/osd/recovery_backend.h
+++ b/src/crimson/osd/recovery_backend.h
@@ -112,6 +112,13 @@ public:
}
return on_stop();
}
+
+ template <typename Func>
+ void for_each_recovery_waiter(Func &&f) {
+ for (auto &[soid, recovery_waiter] : recovering) {
+ std::forward<Func>(f)(soid, recovery_waiter);
+ }
+ }
protected:
crimson::osd::PG& pg;
crimson::osd::ShardServices& shard_services;
@@ -219,6 +226,13 @@ public:
pulled.reset();
}
}
+ void repeat_pull() {
+ ceph_assert(pulled);
+ pulled->set_exception(crimson::ct_error::eagain::exception_ptr());
+ }
+ bool is_pulling() const {
+ return (bool)pulled;
+ }
void set_push_failed(pg_shard_t shard, std::exception_ptr e) {
auto it = pushes.find(shard);
if (it != pushes.end()) {