]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
msg/async/rdma: cosmetics RDMAWorker listen & connect & get_reged_mem
authorChangcheng Liu <changcheng.liu@aliyun.com>
Fri, 21 Jun 2019 02:57:08 +0000 (10:57 +0800)
committerChangcheng Liu <changcheng.liu@aliyun.com>
Fri, 23 Aug 2019 03:35:55 +0000 (11:35 +0800)
1. There's no need to get stack & dispatcher from RDMAStack again
since RDMAWorker has stored the value.
2. cache the Infiniband object to be used in local scope.

Signed-off-by: Changcheng Liu <changcheng.liu@aliyun.com>
src/msg/async/rdma/RDMAStack.cc

index f19910a01793ceba974f341fd284ef72b6f94b7e..82533c83a2981500a6bd3fd0a3298358cfa59039 100644 (file)
@@ -569,17 +569,15 @@ void RDMAWorker::initialize()
 int RDMAWorker::listen(entity_addr_t &sa, unsigned addr_slot,
                       const SocketOptions &opt,ServerSocket *sock)
 {
-  get_stack()->get_infiniband().init();
+  Infiniband &ib = stack->get_infiniband();
+  ib.init();
   dispatcher->polling_start();
+
   RDMAServerSocketImpl *p;
   if (cct->_conf->ms_async_rdma_type == "iwarp") {
-    p = new RDMAIWARPServerSocketImpl(
-      cct, &get_stack()->get_infiniband(), &get_stack()->get_dispatcher(), this,
-      sa, addr_slot);
+    p = new RDMAIWARPServerSocketImpl(cct, &ib, dispatcher, this, sa, addr_slot);
   } else {
-    p = new RDMAServerSocketImpl(cct, &get_stack()->get_infiniband(),
-                                &get_stack()->get_dispatcher(), this, sa,
-                                addr_slot);
+    p = new RDMAServerSocketImpl(cct, &ib, dispatcher, this, sa, addr_slot);
   }
   int r = p->listen(sa, opt);
   if (r < 0) {
@@ -593,14 +591,15 @@ int RDMAWorker::listen(entity_addr_t &sa, unsigned addr_slot,
 
 int RDMAWorker::connect(const entity_addr_t &addr, const SocketOptions &opts, ConnectedSocket *socket)
 {
-  get_stack()->get_infiniband().init();
+  Infiniband &ib = stack->get_infiniband();
+  ib.init();
   dispatcher->polling_start();
 
   RDMAConnectedSocketImpl* p;
   if (cct->_conf->ms_async_rdma_type == "iwarp") {
-    p = new RDMAIWARPConnectedSocketImpl(cct, &get_stack()->get_infiniband(), &get_stack()->get_dispatcher(), this);
+    p = new RDMAIWARPConnectedSocketImpl(cct, &ib, dispatcher, this);
   } else {
-    p = new RDMAConnectedSocketImpl(cct, &get_stack()->get_infiniband(), &get_stack()->get_dispatcher(), this);
+    p = new RDMAConnectedSocketImpl(cct, &ib, dispatcher, this);
   }
   int r = p->try_connect(addr, opts);
 
@@ -617,11 +616,10 @@ int RDMAWorker::connect(const entity_addr_t &addr, const SocketOptions &opts, Co
 int RDMAWorker::get_reged_mem(RDMAConnectedSocketImpl *o, std::vector<Chunk*> &c, size_t bytes)
 {
   ceph_assert(center.in_thread());
-  int r = get_stack()->get_infiniband().get_tx_buffers(c, bytes);
-  ceph_assert(r >= 0);
-  size_t got = get_stack()->get_infiniband().get_memory_manager()->get_tx_buffer_size() * r;
+  int r = stack->get_infiniband().get_tx_buffers(c, bytes);
+  size_t got = stack->get_infiniband().get_memory_manager()->get_tx_buffer_size() * r;
   ldout(cct, 30) << __func__ << " need " << bytes << " bytes, reserve " << got << " registered  bytes, inflight " << dispatcher->inflight << dendl;
-  stack->get_dispatcher().inflight += r;
+  dispatcher->inflight += r;
   if (got >= bytes)
     return r;