From cead17faf7c507aa851a38527ee2e6b5f0818c87 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 10 Oct 2018 12:58:33 -0500 Subject: [PATCH] os/bluestore: {Mutex,Cond} -> ceph::{mutex,condition_variable} Signed-off-by: Sage Weil --- src/os/bluestore/BlueStore.cc | 8 ++++---- src/os/bluestore/BlueStore.h | 11 +++++------ src/os/bluestore/KernelDevice.cc | 5 ++--- src/os/bluestore/KernelDevice.h | 6 +++--- src/os/bluestore/NVMEDevice.cc | 9 ++++----- src/os/bluestore/NVMEDevice.h | 2 -- src/os/bluestore/PMEMDevice.cc | 1 - src/os/bluestore/PMEMDevice.h | 2 +- 8 files changed, 19 insertions(+), 25 deletions(-) diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index a70aa0eff38e7..2be713c06d826 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -3440,7 +3440,7 @@ void BlueStore::Collection::split_cache( void *BlueStore::MempoolThread::entry() { - Mutex::Locker l(lock); + std::unique_lock l(lock); std::list caches; caches.push_back(store->db); @@ -3485,9 +3485,9 @@ void *BlueStore::MempoolThread::entry() interval_stats_trim = false; store->_update_cache_logger(); - utime_t wait; - wait += store->cct->_conf->bluestore_cache_trim_interval; - cond.WaitInterval(lock, wait); + auto wait = ceph::make_timespan( + store->cct->_conf->bluestore_cache_trim_interval); + cond.wait_for(l, wait); } stop = false; return NULL; diff --git a/src/os/bluestore/BlueStore.h b/src/os/bluestore/BlueStore.h index 938c3b39c064c..c45ac8651f1dd 100644 --- a/src/os/bluestore/BlueStore.h +++ b/src/os/bluestore/BlueStore.h @@ -1974,8 +1974,8 @@ private: public: BlueStore *store; - Cond cond; - Mutex lock; + ceph::condition_variable cond; + ceph::mutex lock = ceph::make_mutex("BlueStore::MempoolThread::lock"); bool stop = false; uint64_t autotune_cache_size = 0; @@ -2077,7 +2077,6 @@ private: public: explicit MempoolThread(BlueStore *s) : store(s), - lock("BlueStore::MempoolThread::lock"), meta_cache(MetaCache(s)), data_cache(DataCache(s)) {} @@ -2087,10 +2086,10 @@ private: create("bstore_mempool"); } void shutdown() { - lock.Lock(); + lock.lock(); stop = true; - cond.Signal(); - lock.Unlock(); + cond.notify_all(); + lock.unlock(); join(); } diff --git a/src/os/bluestore/KernelDevice.cc b/src/os/bluestore/KernelDevice.cc index 243d0f6f8cd25..999394e7eb399 100644 --- a/src/os/bluestore/KernelDevice.cc +++ b/src/os/bluestore/KernelDevice.cc @@ -37,7 +37,6 @@ KernelDevice::KernelDevice(CephContext* cct, aio_callback_t cb, void *cbpriv, ai fd_direct(-1), fd_buffered(-1), aio(false), dio(false), - debug_lock("KernelDevice::debug_lock"), aio_queue(cct->_conf->bdev_aio_max_queue_depth), discard_callback(d_cb), discard_callback_priv(d_cbpriv), @@ -576,7 +575,7 @@ void KernelDevice::_aio_log_start( dout(20) << __func__ << " 0x" << std::hex << offset << "~" << length << std::dec << dendl; if (cct->_conf->bdev_debug_inflight_ios) { - Mutex::Locker l(debug_lock); + std::lock_guard l(debug_lock); if (debug_inflight.intersects(offset, length)) { derr << __func__ << " inflight overlap of 0x" << std::hex @@ -619,7 +618,7 @@ void KernelDevice::_aio_log_finish( dout(20) << __func__ << " " << aio << " 0x" << std::hex << offset << "~" << length << std::dec << dendl; if (cct->_conf->bdev_debug_inflight_ios) { - Mutex::Locker l(debug_lock); + std::lock_guard l(debug_lock); debug_inflight.erase(offset, length); } } diff --git a/src/os/bluestore/KernelDevice.h b/src/os/bluestore/KernelDevice.h index 2e9463fcc63f3..229d5a8ad5ad9 100644 --- a/src/os/bluestore/KernelDevice.h +++ b/src/os/bluestore/KernelDevice.h @@ -19,8 +19,8 @@ #include "include/types.h" #include "include/interval_set.h" -#include "common/Mutex.h" -#include "common/Cond.h" +#include "common/Thread.h" +#include "include/utime.h" #include "aio.h" #include "BlockDevice.h" @@ -35,7 +35,7 @@ class KernelDevice : public BlockDevice { std::string devname; ///< kernel dev name (/sys/block/$devname), if any - Mutex debug_lock; + ceph::mutex debug_lock = ceph::make_mutex("KernelDevice::debug_lock"); interval_set debug_inflight; std::atomic io_since_flush = {false}; diff --git a/src/os/bluestore/NVMEDevice.cc b/src/os/bluestore/NVMEDevice.cc index aecadb6e8c42b..19b91f7a6d193 100644 --- a/src/os/bluestore/NVMEDevice.cc +++ b/src/os/bluestore/NVMEDevice.cc @@ -481,7 +481,7 @@ class NVMEManager { }; private: - Mutex lock; + ceph::mutex lock = ceph::make_mutex("NVMEManager::lock"); bool init = false; std::vector shared_driver_datas; std::thread dpdk_thread; @@ -490,11 +490,10 @@ class NVMEManager { std::list probe_queue; public: - NVMEManager() - : lock("NVMEDevice::NVMEManager::lock") {} + NVMEManager() {} int try_get(const spdk_nvme_transport_id& trid, SharedDriverData **driver); void register_ctrlr(const spdk_nvme_transport_id& trid, spdk_nvme_ctrlr *c, SharedDriverData **driver) { - ceph_assert(lock.is_locked()); + ceph_assert(ceph_mutex_is_locked(lock)); spdk_nvme_ns *ns; int num_ns = spdk_nvme_ctrlr_get_num_ns(c); ceph_assert(num_ns >= 1); @@ -547,7 +546,7 @@ static void attach_cb(void *cb_ctx, const struct spdk_nvme_transport_id *trid, int NVMEManager::try_get(const spdk_nvme_transport_id& trid, SharedDriverData **driver) { - Mutex::Locker l(lock); + std::lock_guard l(lock); for (auto &&it : shared_driver_datas) { if (it->is_equal(trid)) { *driver = it; diff --git a/src/os/bluestore/NVMEDevice.h b/src/os/bluestore/NVMEDevice.h index 81911512ccfb2..b0eba9e57c5b5 100644 --- a/src/os/bluestore/NVMEDevice.h +++ b/src/os/bluestore/NVMEDevice.h @@ -27,8 +27,6 @@ #include "include/interval_set.h" #include "common/ceph_time.h" -#include "common/Mutex.h" -#include "common/Cond.h" #include "BlockDevice.h" enum class IOCommand { diff --git a/src/os/bluestore/PMEMDevice.cc b/src/os/bluestore/PMEMDevice.cc index a472751a3931a..5bfa44a9d987f 100644 --- a/src/os/bluestore/PMEMDevice.cc +++ b/src/os/bluestore/PMEMDevice.cc @@ -36,7 +36,6 @@ PMEMDevice::PMEMDevice(CephContext *cct, aio_callback_t cb, void *cbpriv) : BlockDevice(cct, cb, cbpriv), fd(-1), addr(0), - debug_lock("PMEMDevice::debug_lock"), injecting_crash(0) { } diff --git a/src/os/bluestore/PMEMDevice.h b/src/os/bluestore/PMEMDevice.h index a0f869b866e97..1d681668ae00c 100644 --- a/src/os/bluestore/PMEMDevice.h +++ b/src/os/bluestore/PMEMDevice.h @@ -29,7 +29,7 @@ class PMEMDevice : public BlockDevice { char *addr; //the address of mmap std::string path; - Mutex debug_lock; + ceph::mutex debug_lock = ceph::make_mutex("PMEMDevice::debug_lock"); interval_set debug_inflight; std::atomic_int injecting_crash; -- 2.39.5