]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
common: move AsyncOpTracker to common library
authorJason Dillaman <dillaman@redhat.com>
Wed, 21 Sep 2016 17:02:34 +0000 (13:02 -0400)
committerJason Dillaman <dillaman@redhat.com>
Sun, 25 Sep 2016 12:44:58 +0000 (08:44 -0400)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/CMakeLists.txt
src/common/AsyncOpTracker.cc [new file with mode: 0644]
src/common/AsyncOpTracker.h [new file with mode: 0644]
src/journal/AsyncOpTracker.cc [deleted file]
src/journal/AsyncOpTracker.h [deleted file]
src/journal/CMakeLists.txt
src/journal/JournalMetadata.h
src/journal/JournalPlayer.h
src/journal/JournalTrimmer.h

index 9c5166a07a370d37e17f6f62ecefba6405cad76e..0d6586c8843c705de8c3287c070fd8f3c430cf3b 100644 (file)
@@ -318,6 +318,7 @@ add_library(common_texttable_obj OBJECT
 set(libcommon_files
   ${CMAKE_BINARY_DIR}/src/include/ceph_ver.h
   ceph_ver.c
+  common/AsyncOpTracker.cc
   common/DecayCounter.cc
   common/LogClient.cc
   common/LogEntry.cc
diff --git a/src/common/AsyncOpTracker.cc b/src/common/AsyncOpTracker.cc
new file mode 100644 (file)
index 0000000..2219a7f
--- /dev/null
@@ -0,0 +1,53 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#include "common/AsyncOpTracker.h"
+#include "include/assert.h"
+#include "include/Context.h"
+
+AsyncOpTracker::AsyncOpTracker()
+  : m_lock("AsyncOpTracker::m_lock", false, false) {
+}
+
+AsyncOpTracker::~AsyncOpTracker() {
+  Mutex::Locker locker(m_lock);
+  assert(m_pending_ops == 0);
+}
+
+void AsyncOpTracker::start_op() {
+  Mutex::Locker locker(m_lock);
+  ++m_pending_ops;
+}
+
+void AsyncOpTracker::finish_op() {
+  Context *on_finish = nullptr;
+  {
+    Mutex::Locker locker(m_lock);
+    assert(m_pending_ops > 0);
+    if (--m_pending_ops == 0) {
+      std::swap(on_finish, m_on_finish);
+    }
+  }
+
+  if (on_finish != nullptr) {
+    on_finish->complete(0);
+  }
+}
+
+void AsyncOpTracker::wait_for_ops(Context *on_finish) {
+  {
+    Mutex::Locker locker(m_lock);
+    assert(m_on_finish == nullptr);
+    if (m_pending_ops > 0) {
+      m_on_finish = on_finish;
+      return;
+    }
+  }
+  on_finish->complete(0);
+}
+
+bool AsyncOpTracker::empty() {
+  Mutex::Locker locker(m_lock);
+  return (m_pending_ops == 0);
+}
+
diff --git a/src/common/AsyncOpTracker.h b/src/common/AsyncOpTracker.h
new file mode 100644 (file)
index 0000000..fccc9f9
--- /dev/null
@@ -0,0 +1,31 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#ifndef CEPH_ASYNC_OP_TRACKER_H
+#define CEPH_ASYNC_OP_TRACKER_H
+
+#include "include/int_types.h"
+#include "common/Mutex.h"
+
+struct Context;
+
+class AsyncOpTracker {
+public:
+  AsyncOpTracker();
+  ~AsyncOpTracker();
+
+  void start_op();
+  void finish_op();
+
+  void wait_for_ops(Context *on_finish);
+
+  bool empty();
+
+private:
+  Mutex m_lock;
+  uint32_t m_pending_ops = 0;
+  Context *m_on_finish = nullptr;
+
+};
+
+#endif // CEPH_ASYNC_OP_TRACKER_H
diff --git a/src/journal/AsyncOpTracker.cc b/src/journal/AsyncOpTracker.cc
deleted file mode 100644 (file)
index 13a55fa..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
-// vim: ts=8 sw=2 smarttab
-
-#include "journal/AsyncOpTracker.h"
-#include "journal/Utils.h"
-#include "include/assert.h"
-
-namespace journal {
-
-AsyncOpTracker::AsyncOpTracker()
-  : m_lock(utils::unique_lock_name("AsyncOpTracker::m_lock", this)),
-    m_pending_ops(0) {
-}
-
-AsyncOpTracker::~AsyncOpTracker() {
-  wait_for_ops();
-}
-
-void AsyncOpTracker::start_op() {
-  Mutex::Locker locker(m_lock);
-  ++m_pending_ops;
-}
-
-void AsyncOpTracker::finish_op() {
-  Context *on_finish = nullptr;
-  {
-    Mutex::Locker locker(m_lock);
-    assert(m_pending_ops > 0);
-    if (--m_pending_ops == 0) {
-      m_cond.Signal();
-      std::swap(on_finish, m_on_finish);
-    }
-  }
-
-  if (on_finish != nullptr) {
-    on_finish->complete(0);
-  }
-}
-
-void AsyncOpTracker::wait_for_ops() {
-  Mutex::Locker locker(m_lock);
-  while (m_pending_ops > 0) {
-    m_cond.Wait(m_lock);
-  }
-}
-
-void AsyncOpTracker::wait_for_ops(Context *on_finish) {
-  {
-    Mutex::Locker locker(m_lock);
-    assert(m_on_finish == nullptr);
-    if (m_pending_ops > 0) {
-      m_on_finish = on_finish;
-      return;
-    }
-  }
-  on_finish->complete(0);
-}
-
-bool AsyncOpTracker::empty() {
-  Mutex::Locker locker(m_lock);
-  return (m_pending_ops == 0);
-}
-
-} // namespace journal
diff --git a/src/journal/AsyncOpTracker.h b/src/journal/AsyncOpTracker.h
deleted file mode 100644 (file)
index a88cd45..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
-// vim: ts=8 sw=2 smarttab
-
-#ifndef CEPH_JOURNAL_ASYNC_OP_TRACKER_H
-#define CEPH_JOURNAL_ASYNC_OP_TRACKER_H
-
-#include "include/int_types.h"
-#include "common/Cond.h"
-#include "common/Mutex.h"
-
-struct Context;
-
-namespace journal {
-
-class AsyncOpTracker {
-public:
-  AsyncOpTracker();
-  ~AsyncOpTracker();
-
-  void start_op();
-  void finish_op();
-
-  void wait_for_ops();
-  void wait_for_ops(Context *on_finish);
-
-  bool empty();
-
-private:
-  Mutex m_lock;
-  Cond m_cond;
-  uint32_t m_pending_ops;
-  Context *m_on_finish = nullptr;
-
-};
-
-} // namespace journal
-
-#endif // CEPH_JOURNAL_ASYNC_OP_TRACKER_H
index 50b8c307cb28b8fdb73aff3771473337660fa164..3632c1051ec2b5ed90dd4787aa8a5558d80f16a4 100644 (file)
@@ -1,5 +1,4 @@
 set(journal_srcs
-  AsyncOpTracker.cc
   Entry.cc
   Future.cc
   FutureImpl.cc
index 880130126dd9eb877192601cea78ca5353aa8165..969472f61f129cad1d8e7d77f51d32c46005a243 100644 (file)
@@ -7,12 +7,12 @@
 #include "include/int_types.h"
 #include "include/Context.h"
 #include "include/rados/librados.hpp"
+#include "common/AsyncOpTracker.h"
 #include "common/Cond.h"
 #include "common/Mutex.h"
 #include "common/RefCountedObj.h"
 #include "common/WorkQueue.h"
 #include "cls/journal/cls_journal_types.h"
-#include "journal/AsyncOpTracker.h"
 #include "journal/JournalMetadataListener.h"
 #include "journal/Settings.h"
 #include <boost/intrusive_ptr.hpp>
index 690eccdd47191a1d6597bb51c88f46fc2b4fb786..ff5732bd8aa7dbcff3497b37d8f3424d43d2546b 100644 (file)
@@ -7,8 +7,8 @@
 #include "include/int_types.h"
 #include "include/Context.h"
 #include "include/rados/librados.hpp"
+#include "common/AsyncOpTracker.h"
 #include "common/Mutex.h"
-#include "journal/AsyncOpTracker.h"
 #include "journal/JournalMetadata.h"
 #include "journal/ObjectPlayer.h"
 #include "cls/journal/cls_journal_types.h"
index 55379be7bbdb75f6a19d73f5cf1f50c8d1956111..73641db38cce8c49be16f97ae52418c5fd7d4eb2 100644 (file)
@@ -7,8 +7,8 @@
 #include "include/int_types.h"
 #include "include/rados/librados.hpp"
 #include "include/Context.h"
+#include "common/AsyncOpTracker.h"
 #include "common/Mutex.h"
-#include "journal/AsyncOpTracker.h"
 #include "journal/JournalMetadata.h"
 #include "cls/journal/cls_journal_types.h"
 #include <functional>