From: Haomai Wang Date: Fri, 11 Aug 2017 02:02:45 +0000 (+0800) Subject: msg/async/rdma: add atomic and lock protection X-Git-Tag: v13.0.0~137^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=584f64e5e43d4b21ffd44fb26729e95662ee9488;p=ceph.git msg/async/rdma: add atomic and lock protection Signed-off-by: Haomai Wang --- 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;