]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/journal/Journaler.h
import 15.2.0 Octopus source
[ceph.git] / ceph / src / journal / Journaler.h
index 5a6e0c7c18a80e16f2a036fe4bf194a9aa77d054..fe44401848aca931297f2561cf292221cc43105b 100644 (file)
@@ -22,9 +22,8 @@ class ThreadPool;
 
 namespace journal {
 
-class JournalMetadata;
-class JournalPlayer;
-class JournalRecorder;
+struct CacheManagerHandler;
+
 class JournalTrimmer;
 class ReplayEntry;
 class ReplayHandler;
@@ -39,8 +38,8 @@ public:
     ThreadPool *thread_pool = nullptr;
     ContextWQ *work_queue = nullptr;
 
-    SafeTimer *timer = nullptr;
-    Mutex timer_lock;
+    SafeTimer *timer;
+    ceph::mutex timer_lock = ceph::make_mutex("Journaler::timer_lock");
   };
 
   typedef cls::journal::Tag Tag;
@@ -52,10 +51,12 @@ public:
                                       const std::string &journal_id);
 
   Journaler(librados::IoCtx &header_ioctx, const std::string &journal_id,
-           const std::string &client_id, const Settings &settings);
-  Journaler(ContextWQ *work_queue, SafeTimer *timer, Mutex *timer_lock,
+           const std::string &client_id, const Settings &settings,
+            CacheManagerHandler *cache_manager_handler);
+  Journaler(ContextWQ *work_queue, SafeTimer *timer, ceph::mutex *timer_lock,
             librados::IoCtx &header_ioctx, const std::string &journal_id,
-           const std::string &client_id, const Settings &settings);
+           const std::string &client_id, const Settings &settings,
+            CacheManagerHandler *cache_manager_handler);
   ~Journaler();
 
   void exists(Context *on_finish) const;
@@ -99,8 +100,8 @@ public:
   void get_tags(uint64_t start_after_tag_tid, uint64_t tag_class, Tags *tags,
                 Context *on_finish);
 
-  void start_replay(ReplayHandler *replay_handler);
-  void start_live_replay(ReplayHandler *replay_handler, double interval);
+  void start_replay(ReplayHandlerreplay_handler);
+  void start_live_replay(ReplayHandlerreplay_handler, double interval);
   bool try_pop_front(ReplayEntry *replay_entry, uint64_t *tag_tid = nullptr);
   void stop_replay();
   void stop_replay(Context *on_finish);
@@ -139,22 +140,23 @@ private:
   librados::IoCtx m_data_ioctx;
   CephContext *m_cct;
   std::string m_client_id;
+  CacheManagerHandler *m_cache_manager_handler;
 
   std::string m_header_oid;
   std::string m_object_oid_prefix;
 
   bool m_initialized = false;
-  JournalMetadata *m_metadata = nullptr;
-  JournalPlayer *m_player = nullptr;
-  JournalRecorder *m_recorder = nullptr;
+  ceph::ref_t<class JournalMetadata> m_metadata;
+  std::unique_ptr<class JournalPlayer> m_player;
+  std::unique_ptr<class JournalRecorder> m_recorder;
   JournalTrimmer *m_trimmer = nullptr;
 
-  void set_up(ContextWQ *work_queue, SafeTimer *timer, Mutex *timer_lock,
+  void set_up(ContextWQ *work_queue, SafeTimer *timer, ceph::mutex *timer_lock,
               librados::IoCtx &header_ioctx, const std::string &journal_id,
               const Settings &settings);
 
   int init_complete();
-  void create_player(ReplayHandler *replay_handler);
+  void create_player(ReplayHandlerreplay_handler);
 
   friend std::ostream &operator<<(std::ostream &os,
                                  const Journaler &journaler);