From 5ca9df3bb7818609f85fd885c9c9af34c1149b70 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Wed, 17 Jul 2019 16:31:42 +0800 Subject: [PATCH] tools/rbd_nbd: s/Mutex/ceph::mutex/ Signed-off-by: Kefu Chai --- src/tools/rbd_nbd/rbd-nbd.cc | 39 +++++++++++++++++------------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/src/tools/rbd_nbd/rbd-nbd.cc b/src/tools/rbd_nbd/rbd-nbd.cc index 7164d097dcf1a..1c56d73cb124f 100644 --- a/src/tools/rbd_nbd/rbd-nbd.cc +++ b/src/tools/rbd_nbd/rbd-nbd.cc @@ -151,16 +151,15 @@ public: NBDServer(int _fd, librbd::Image& _image) : fd(_fd) , image(_image) - , disconnect_lock("NBDServer::DisconnectLocker") - , lock("NBDServer::Locker") , reader_thread(*this, &NBDServer::reader_entry) , writer_thread(*this, &NBDServer::writer_entry) , started(false) {} private: - Mutex disconnect_lock; - Cond disconnect_cond; + ceph::mutex disconnect_lock = + ceph::make_mutex("NBDServer::DisconnectLocker"); + ceph::condition_variable disconnect_cond; std::atomic terminated = { false }; void shutdown() @@ -169,8 +168,8 @@ private: if (terminated.compare_exchange_strong(expected, true)) { ::shutdown(fd, SHUT_RDWR); - Mutex::Locker l(lock); - cond.Signal(); + std::lock_guard l{lock}; + cond.notify_all(); } } @@ -190,31 +189,30 @@ private: friend std::ostream &operator<<(std::ostream &os, const IOContext &ctx); - Mutex lock; - Cond cond; + ceph::mutex lock = ceph::make_mutex("NBDServer::Locker"); + ceph::condition_variable cond; xlist io_pending; xlist io_finished; void io_start(IOContext *ctx) { - Mutex::Locker l(lock); + std::lock_guard l{lock}; io_pending.push_back(&ctx->item); } void io_finish(IOContext *ctx) { - Mutex::Locker l(lock); + std::lock_guard l{lock}; ceph_assert(ctx->item.is_on_list()); ctx->item.remove_myself(); io_finished.push_back(&ctx->item); - cond.Signal(); + cond.notify_all(); } IOContext *wait_io_finish() { - Mutex::Locker l(lock); - while(io_finished.empty() && !terminated) - cond.Wait(lock); + std::unique_lock l{lock}; + cond.wait(l, [this] { return !io_finished.empty() || terminated; }); if (io_finished.empty()) return NULL; @@ -228,9 +226,8 @@ private: void wait_clean() { ceph_assert(!reader_thread.is_started()); - Mutex::Locker l(lock); - while(!io_pending.empty()) - cond.Wait(lock); + std::unique_lock l{lock}; + cond.wait(l, [this] { return io_finished.empty(); }); while(!io_finished.empty()) { std::unique_ptr free_ctx(io_finished.front()); @@ -348,8 +345,8 @@ private: dout(20) << __func__ << ": terminated" << dendl; signal: - Mutex::Locker l(disconnect_lock); - disconnect_cond.Signal(); + std::lock_guard l{disconnect_lock}; + disconnect_cond.notify_all(); } void writer_entry() @@ -423,8 +420,8 @@ public: if (!started) return; - Mutex::Locker l(disconnect_lock); - disconnect_cond.Wait(disconnect_lock); + std::unique_lock l{disconnect_lock}; + disconnect_cond.wait(l); } ~NBDServer() -- 2.39.5