template <typename I>
void Replayer<I>::handle_replay_flush(int r) {
+ std::unique_lock locker{m_lock};
dout(10) << "r=" << r << dendl;
+ m_flush_tracker.finish_op();
+
if (r < 0) {
derr << "replay flush encountered an error: " << cpp_strerror(r) << dendl;
- handle_replay_complete(r, "replay flush encountered an error");
+ handle_replay_complete(locker, r, "replay flush encountered an error");
m_event_replay_tracker.finish_op();
return;
- } else if (is_replay_complete()) {
+ } else if (is_replay_complete(locker)) {
m_event_replay_tracker.finish_op();
return;
}
void init_remote_journaler();
void handle_init_remote_journaler(int r);
- void start_external_replay();
+ void start_external_replay(std::unique_lock<ceph::mutex>& locker);
void handle_start_external_replay(int r);
+ bool add_local_journal_listener(std::unique_lock<ceph::mutex>& locker);
+
bool notify_init_complete(std::unique_lock<ceph::mutex>& locker);
+ void wait_for_flush();
+ void handle_wait_for_flush(int r);
+
void shut_down_local_journal_replay();
void handle_shut_down_local_journal_replay(int r);