]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
journal: move rados_ctx_callback to utils namespace
authorJason Dillaman <dillaman@redhat.com>
Tue, 30 Jun 2015 14:42:21 +0000 (10:42 -0400)
committerJason Dillaman <dillaman@redhat.com>
Fri, 6 Nov 2015 01:42:41 +0000 (20:42 -0500)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/journal/JournalMetadata.cc
src/journal/JournalMetadata.h
src/journal/ObjectPlayer.cc
src/journal/ObjectRecorder.cc
src/journal/Utils.cc
src/journal/Utils.h

index 35cf21788f3650e6731de06474af96abc28d7f0b..ab0538f878858b57a6df6facb16d15bb4c044467 100644 (file)
@@ -2,6 +2,7 @@
 // vim: ts=8 sw=2 smarttab
 
 #include "journal/JournalMetadata.h"
+#include "journal/Utils.h"
 #include "common/errno.h"
 #include "common/Timer.h"
 #include "cls/journal/cls_journal_client.h"
@@ -14,28 +15,6 @@ namespace journal {
 
 using namespace cls::journal;
 
-namespace {
-
-struct C_NotifyUpdate : public Context {
-  JournalMetadataPtr journal_metadata;
-
-  C_NotifyUpdate(JournalMetadata *_journal_metadata)
-    : journal_metadata(_journal_metadata) {}
-
-  virtual void finish(int r) {
-    if (r == 0) {
-      journal_metadata->notify_update();
-    }
-  }
-};
-
-void rados_ctx_callback(rados_completion_t c, void *arg) {
-  Context *comp = reinterpret_cast<Context *>(arg);
-  comp->complete(rados_aio_get_return_value(c));
-}
-
-} // anonymous namespace
-
 JournalMetadata::JournalMetadata(librados::IoCtx &ioctx,
                                  const std::string &oid,
                                  const std::string &client_id)
@@ -147,7 +126,8 @@ void JournalMetadata::set_minimum_set(uint64_t object_set) {
 
   C_NotifyUpdate *ctx = new C_NotifyUpdate(this);
   librados::AioCompletion *comp =
-    librados::Rados::aio_create_completion(ctx, NULL, rados_ctx_callback);
+    librados::Rados::aio_create_completion(ctx, NULL,
+                                           utils::rados_ctx_callback);
   int r = m_ioctx.aio_operate(m_oid, comp, &op);
   assert(r == 0);
   comp->release();
@@ -166,7 +146,8 @@ void JournalMetadata::set_active_set(uint64_t object_set) {
 
   C_NotifyUpdate *ctx = new C_NotifyUpdate(this);
   librados::AioCompletion *comp =
-    librados::Rados::aio_create_completion(ctx, NULL, rados_ctx_callback);
+    librados::Rados::aio_create_completion(ctx, NULL,
+                                           utils::rados_ctx_callback);
   int r = m_ioctx.aio_operate(m_oid, comp, &op);
   assert(r == 0);
   comp->release();
@@ -175,15 +156,16 @@ void JournalMetadata::set_active_set(uint64_t object_set) {
 }
 
 void JournalMetadata::set_commit_position(
-    const ObjectSetPosition &commit_position) {
+    const ObjectSetPosition &commit_position, Context *on_safe) {
   Mutex::Locker locker(m_lock);
 
   librados::ObjectWriteOperation op;
   client::client_commit(&op, m_client_id, commit_position);
 
-  C_NotifyUpdate *ctx = new C_NotifyUpdate(this);
+  C_NotifyUpdate *ctx = new C_NotifyUpdate(this, on_safe);
   librados::AioCompletion *comp =
-    librados::Rados::aio_create_completion(ctx, NULL, rados_ctx_callback);
+    librados::Rados::aio_create_completion(ctx, NULL,
+                                           utils::rados_ctx_callback);
   int r = m_ioctx.aio_operate(m_oid, comp, &op);
   assert(r == 0);
   comp->release();
index 2bab6870bbce0175b1dda3c2b9d3df60554fb818..88f7f914724c8cf638c7109857973a171049d4f0 100644 (file)
@@ -76,7 +76,8 @@ public:
     return m_active_set;
   }
 
-  void set_commit_position(const ObjectSetPosition &commit_position);
+  void set_commit_position(const ObjectSetPosition &commit_position,
+                           Context *on_safe);
   void get_commit_position(ObjectSetPosition *commit_position) const {
     Mutex::Locker locker(m_lock);
     *commit_position = m_client.commit_position;
@@ -109,6 +110,7 @@ private:
       journal_metadata->handle_watch_error(err);
     }
   };
+
   struct C_WatchReset : public Context {
     JournalMetadataPtr journal_metadata;
 
@@ -120,6 +122,23 @@ private:
     }
   };
 
+  struct C_NotifyUpdate : public Context {
+    JournalMetadataPtr journal_metadata;
+    Context *on_safe;
+
+    C_NotifyUpdate(JournalMetadata *_journal_metadata, Context *_on_safe = NULL)
+      : journal_metadata(_journal_metadata), on_safe(_on_safe) {}
+
+    virtual void finish(int r) {
+      if (r == 0) {
+        journal_metadata->notify_update();
+      }
+      if (on_safe != NULL) {
+        on_safe->complete(r);
+      }
+    }
+  };
+
   struct C_Refresh : public Context {
     JournalMetadataPtr journal_metadata;
     uint64_t minimum_set;
index 704937de7743db06b721d2bf6ae315759384f995..0a5b0568640dad8312a72eea506b616cf4df832e 100644 (file)
 
 namespace journal {
 
-namespace {
-
-void rados_ctx_callback(rados_completion_t c, void *arg) {
-  Context *ctx = reinterpret_cast<Context *>(arg);
-  ctx->complete(rados_aio_get_return_value(c));
-}
-
-} // anonymous namespace
-
 ObjectPlayer::ObjectPlayer(librados::IoCtx &ioctx,
                            const std::string &object_oid_prefix,
                            uint64_t object_num, SafeTimer &timer,
@@ -54,7 +45,8 @@ void ObjectPlayer::fetch(Context *on_finish) {
   op.read(m_read_off, 2 << m_order, &context->read_bl, NULL);
 
   librados::AioCompletion *rados_completion =
-    librados::Rados::aio_create_completion(context, rados_ctx_callback, NULL);
+    librados::Rados::aio_create_completion(context, utils::rados_ctx_callback,
+                                           NULL);
   int r = m_ioctx.aio_operate(m_oid, rados_completion, &op, 0, NULL);
   assert(r == 0);
   rados_completion->release();
index 2677b281feb6f53194257d7b05e1eee4c16d7cba..b81cd3cb46b87105d1efb063249b7dd17fe7c91a 100644 (file)
@@ -15,15 +15,6 @@ using namespace cls::journal;
 
 namespace journal {
 
-namespace {
-
-void rados_ctx_callback(rados_completion_t c, void *arg) {
-  Context *ctx = reinterpret_cast<Context *>(arg);
-  ctx->complete(rados_aio_get_return_value(c));
-}
-
-} // anonymous
-
 ObjectRecorder::ObjectRecorder(librados::IoCtx &ioctx, const std::string &oid,
                                uint64_t object_number,
                                SafeTimer &timer, Mutex &timer_lock,
@@ -282,7 +273,7 @@ void ObjectRecorder::send_appends(AppendBuffers *append_buffers) {
 
   librados::AioCompletion *rados_completion =
     librados::Rados::aio_create_completion(append_flush, NULL,
-                                           rados_ctx_callback);
+                                           utils::rados_ctx_callback);
   int r = m_ioctx.aio_operate(m_oid, rados_completion, &op);
   assert(r == 0);
   rados_completion->release();
index eea61363c4752c2cbe1f2d8f8b439301fc7d58ce..2a8d945a3dcd7fafd72a463c5112b9a7d98cf8c9 100644 (file)
@@ -2,6 +2,7 @@
 // vim: ts=8 sw=2 smarttab
 
 #include "journal/Utils.h"
+#include "include/Context.h"
 #include "include/stringify.h"
 
 namespace journal {
@@ -15,5 +16,10 @@ std::string unique_lock_name(const std::string &name, void *address) {
   return name + " (" + stringify(address) + ")";
 }
 
+void rados_ctx_callback(rados_completion_t c, void *arg) {
+  Context *comp = reinterpret_cast<Context *>(arg);
+  comp->complete(rados_aio_get_return_value(c));
+}
+
 } // namespace utils
 } // namespace journal
index 1e449b187fd91e4f909c35abcee061899fcfb661..1169ac924700022180df1c71c450351541eec56d 100644 (file)
@@ -5,6 +5,7 @@
 #define CEPH_JOURNAL_UTILS_H
 
 #include "include/int_types.h"
+#include "include/rados/librados.hpp"
 #include <string>
 
 namespace journal {
@@ -14,6 +15,8 @@ std::string get_object_name(const std::string &prefix, uint64_t number);
 
 std::string unique_lock_name(const std::string &name, void *address);
 
+void rados_ctx_callback(rados_completion_t c, void *arg);
+
 } // namespace utils
 } // namespace journal