]> git-server-git.apps.pok.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>
Tue, 11 Oct 2016 17:52:46 +0000 (13:52 -0400)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit 72d8992f054a7e36f92fdd2e01278ce3b9ede2eb)

Conflicts:
src/journal/CMakeLists.txt: doesn't exist in Jewel

src/CMakeLists.txt
src/common/AsyncOpTracker.cc [new file with mode: 0644]
src/common/AsyncOpTracker.h [new file with mode: 0644]
src/common/Makefile.am
src/journal/AsyncOpTracker.cc [deleted file]
src/journal/AsyncOpTracker.h [deleted file]
src/journal/JournalMetadata.h
src/journal/JournalPlayer.h
src/journal/JournalTrimmer.h
src/journal/Makefile.am

index 103e68a14c60ee19205426812cc757d952981b43..1bfc031c9d90c5675bae29b9fd2a7bc51b698015 100644 (file)
@@ -212,6 +212,7 @@ endif(HAVE_GOOD_YASM_ELF64)
 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
index 8b30eeadec17d05ed305e35266a9aa3c2b521e6d..0a3a4ae9610657201328816b882e5ce57ebea165 100644 (file)
@@ -1,5 +1,6 @@
 libcommon_internal_la_SOURCES = \
        ceph_ver.c \
+       common/AsyncOpTracker.cc \
        common/DecayCounter.cc \
        common/LogClient.cc \
        common/LogEntry.cc \
@@ -178,6 +179,7 @@ libcommon_la_LIBADD = $(LIBCOMMON_DEPS)
 noinst_LTLIBRARIES += libcommon.la
 
 noinst_HEADERS += \
+       common/AsyncOpTracker.h \
        common/BackTrace.h \
        common/RefCountedObj.h \
        common/HeartbeatMap.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 d28710b3c15d3b446b2a97db0f6ac201251452ad..61b16967d4d63936c15731efccfdd1a6c21dbd35 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 ec76d722cac5e5c6b98e24e07a350fa0653efcaa..9aefb879ea7541a755c549cb389e79895e8e7c96 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>
index ad4d54dc48850eda895d591eb3a626bf9ad2687a..676997aed3d6d0a8348881563012e1f1a95015a0 100644 (file)
@@ -2,7 +2,6 @@ if ENABLE_CLIENT
 if WITH_RADOS
 
 libjournal_la_SOURCES = \
-       journal/AsyncOpTracker.cc \
        journal/Entry.cc \
        journal/Future.cc \
        journal/FutureImpl.cc \
@@ -17,7 +16,6 @@ libjournal_la_SOURCES = \
 
 noinst_LTLIBRARIES += libjournal.la
 noinst_HEADERS += \
-       journal/AsyncOpTracker.h \
        journal/Entry.h \
        journal/Future.h \
        journal/FutureImpl.h \