diff options
Diffstat (limited to 'src/crimson/osd/recovery_backend.h')
-rw-r--r-- | src/crimson/osd/recovery_backend.h | 14 |
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()) { |