From 584f64e5e43d4b21ffd44fb26729e95662ee9488 Mon Sep 17 00:00:00 2001 From: Haomai Wang Date: Fri, 11 Aug 2017 10:02:45 +0800 Subject: [PATCH] msg/async/rdma: add atomic and lock protection Signed-off-by: Haomai Wang --- src/msg/async/rdma/Infiniband.cc | 4 ++-- src/msg/async/rdma/Infiniband.h | 1 - src/msg/async/rdma/RDMAStack.cc | 1 + 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/msg/async/rdma/Infiniband.cc b/src/msg/async/rdma/Infiniband.cc index 5173feb94340..a6842f0bf680 100644 --- a/src/msg/async/rdma/Infiniband.cc +++ b/src/msg/async/rdma/Infiniband.cc @@ -778,7 +778,7 @@ int Infiniband::MemoryManager::get_send_buffers(std::vector &c, size_t b return send->get_buffers(c, bytes); } -bool Infiniband::init_prereq = false; +static std::atomic init_prereq = {false}; void Infiniband::verify_prereq(CephContext *cct) { @@ -792,7 +792,7 @@ void Infiniband::verify_prereq(CephContext *cct) { ldout(cct, 20) << __func__ << " ms_async_rdma_enable_hugepage value is: " << cct->_conf->ms_async_rdma_enable_hugepage << dendl; if (cct->_conf->ms_async_rdma_enable_hugepage){ rc = setenv("RDMAV_HUGEPAGES_SAFE","1",1); - ldout(cct, 20) << __func__ << " RDMAV_HUGEPAGES_SAFE is set as: " << getenv("RDMAV_HUGEPAGES_SAFE") << dendl; + ldout(cct, 0) << __func__ << " RDMAV_HUGEPAGES_SAFE is set as: " << getenv("RDMAV_HUGEPAGES_SAFE") << dendl; if (rc) { lderr(cct) << __func__ << " failed to export RDMA_HUGEPAGES_SAFE. On RDMA must be exported before using huge pages. Application aborts." << dendl; ceph_abort(); diff --git a/src/msg/async/rdma/Infiniband.h b/src/msg/async/rdma/Infiniband.h index 67b3b9b457a2..d9b196ba5570 100644 --- a/src/msg/async/rdma/Infiniband.h +++ b/src/msg/async/rdma/Infiniband.h @@ -328,7 +328,6 @@ class Infiniband { bool initialized = false; const std::string &device_name; uint8_t port_num; - static bool init_prereq; public: explicit Infiniband(CephContext *c); diff --git a/src/msg/async/rdma/RDMAStack.cc b/src/msg/async/rdma/RDMAStack.cc index a477cf531a02..1b7a32a3f3cc 100644 --- a/src/msg/async/rdma/RDMAStack.cc +++ b/src/msg/async/rdma/RDMAStack.cc @@ -95,6 +95,7 @@ void RDMADispatcher::polling_start() void RDMADispatcher::polling_stop() { + Mutex::Locker l(lock); done = true; if (!t.joinable()) return; -- 2.47.3