From 2460a3dbe7d04f1a4daa44d7367d24d47fa070fb Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Wed, 21 Sep 2016 13:02:34 -0400 Subject: [PATCH] common: move AsyncOpTracker to common library Signed-off-by: Jason Dillaman (cherry picked from commit 72d8992f054a7e36f92fdd2e01278ce3b9ede2eb) Conflicts: src/journal/CMakeLists.txt: doesn't exist in Jewel --- src/CMakeLists.txt | 1 + src/{journal => common}/AsyncOpTracker.cc | 21 +++++---------------- src/{journal => common}/AsyncOpTracker.h | 15 ++++----------- src/common/Makefile.am | 2 ++ src/journal/JournalMetadata.h | 2 +- src/journal/JournalPlayer.h | 2 +- src/journal/JournalTrimmer.h | 2 +- src/journal/Makefile.am | 2 -- 8 files changed, 15 insertions(+), 32 deletions(-) rename src/{journal => common}/AsyncOpTracker.cc (73%) rename src/{journal => common}/AsyncOpTracker.h (61%) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 103e68a14c60e..1bfc031c9d90c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -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/journal/AsyncOpTracker.cc b/src/common/AsyncOpTracker.cc similarity index 73% rename from src/journal/AsyncOpTracker.cc rename to src/common/AsyncOpTracker.cc index 13a55fa7a47cc..2219a7fd7f61e 100644 --- a/src/journal/AsyncOpTracker.cc +++ b/src/common/AsyncOpTracker.cc @@ -1,19 +1,17 @@ // -*- 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 "common/AsyncOpTracker.h" #include "include/assert.h" - -namespace journal { +#include "include/Context.h" AsyncOpTracker::AsyncOpTracker() - : m_lock(utils::unique_lock_name("AsyncOpTracker::m_lock", this)), - m_pending_ops(0) { + : m_lock("AsyncOpTracker::m_lock", false, false) { } AsyncOpTracker::~AsyncOpTracker() { - wait_for_ops(); + Mutex::Locker locker(m_lock); + assert(m_pending_ops == 0); } void AsyncOpTracker::start_op() { @@ -27,7 +25,6 @@ void AsyncOpTracker::finish_op() { 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); } } @@ -37,13 +34,6 @@ void AsyncOpTracker::finish_op() { } } -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); @@ -61,4 +51,3 @@ bool AsyncOpTracker::empty() { return (m_pending_ops == 0); } -} // namespace journal diff --git a/src/journal/AsyncOpTracker.h b/src/common/AsyncOpTracker.h similarity index 61% rename from src/journal/AsyncOpTracker.h rename to src/common/AsyncOpTracker.h index a88cd453fe912..fccc9f91d6bd3 100644 --- a/src/journal/AsyncOpTracker.h +++ b/src/common/AsyncOpTracker.h @@ -1,17 +1,14 @@ // -*- 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 +#ifndef CEPH_ASYNC_OP_TRACKER_H +#define CEPH_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(); @@ -20,19 +17,15 @@ public: 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; + uint32_t m_pending_ops = 0; Context *m_on_finish = nullptr; }; -} // namespace journal - -#endif // CEPH_JOURNAL_ASYNC_OP_TRACKER_H +#endif // CEPH_ASYNC_OP_TRACKER_H diff --git a/src/common/Makefile.am b/src/common/Makefile.am index 8b30eeadec17d..0a3a4ae961065 100644 --- a/src/common/Makefile.am +++ b/src/common/Makefile.am @@ -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/JournalMetadata.h b/src/journal/JournalMetadata.h index d28710b3c15d3..61b16967d4d63 100644 --- a/src/journal/JournalMetadata.h +++ b/src/journal/JournalMetadata.h @@ -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 diff --git a/src/journal/JournalPlayer.h b/src/journal/JournalPlayer.h index 690eccdd47191..ff5732bd8aa7d 100644 --- a/src/journal/JournalPlayer.h +++ b/src/journal/JournalPlayer.h @@ -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" diff --git a/src/journal/JournalTrimmer.h b/src/journal/JournalTrimmer.h index ec76d722cac5e..9aefb879ea754 100644 --- a/src/journal/JournalTrimmer.h +++ b/src/journal/JournalTrimmer.h @@ -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 diff --git a/src/journal/Makefile.am b/src/journal/Makefile.am index ad4d54dc48850..676997aed3d6d 100644 --- a/src/journal/Makefile.am +++ b/src/journal/Makefile.am @@ -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 \ -- 2.39.5