]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/librbd/Journal.h
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / librbd / Journal.h
index 1554fed790568f97c6b459a46bd1317f79ed8b15..64ea13fe23ac9f8c811d38cad34c92156703c5c4 100644 (file)
 #include "common/AsyncOpTracker.h"
 #include "common/Cond.h"
 #include "common/RefCountedObj.h"
-#include "common/WorkQueue.h"
 #include "journal/Future.h"
 #include "journal/JournalMetadataListener.h"
 #include "journal/ReplayEntry.h"
 #include "journal/ReplayHandler.h"
 #include "librbd/Utils.h"
+#include "librbd/asio/ContextWQ.h"
 #include "librbd/journal/Types.h"
 #include "librbd/journal/TypeTraits.h"
 
 #include <atomic>
 #include <unordered_map>
 
+class ContextWQ;
 class SafeTimer;
-namespace journal {
-class Journaler;
-}
+namespace journal { class Journaler; }
 
 namespace librbd {
 
@@ -91,6 +90,8 @@ public:
   Journal(ImageCtxT &image_ctx);
   ~Journal();
 
+  static void get_work_queue(CephContext *cct, ContextWQ **work_queue);
+
   static bool is_journal_supported(ImageCtxT &image_ctx);
   static int create(librados::IoCtx &io_ctx, const std::string &image_id,
                     uint8_t order, uint8_t splay_width,
@@ -101,11 +102,11 @@ public:
   static void is_tag_owner(ImageCtxT *image_ctx, bool *is_tag_owner,
                            Context *on_finish);
   static void is_tag_owner(librados::IoCtx& io_ctx, std::string& image_id,
-                           bool *is_tag_owner, ContextWQ *op_work_queue,
+                           bool *is_tag_owner, asio::ContextWQ *op_work_queue,
                            Context *on_finish);
   static void get_tag_owner(librados::IoCtx& io_ctx, std::string& image_id,
                             std::string *mirror_uuid,
-                            ContextWQ *op_work_queue, Context *on_finish);
+                            asio::ContextWQ *op_work_queue, Context *on_finish);
   static int request_resync(ImageCtxT *image_ctx);
   static void promote(ImageCtxT *image_ctx, Context *on_finish);
   static void demote(ImageCtxT *image_ctx, Context *on_finish);
@@ -303,12 +304,7 @@ private:
 
     MetadataListener(Journal<ImageCtxT> *journal) : journal(journal) { }
 
-    void handle_update(::journal::JournalMetadata *) override {
-      auto ctx = new LambdaContext([this](int r) {
-        journal->handle_metadata_updated();
-      });
-      journal->m_work_queue->queue(ctx, 0);
-    }
+    void handle_update(::journal::JournalMetadata *) override;
   } m_metadata_listener;
 
   typedef std::set<journal::Listener *> Listeners;