]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
msg/async/rdma: avoid use global NetHandler which refer to cephcontext 12068/head
authorHaomai Wang <haomai@xsky.com>
Mon, 21 Nov 2016 10:36:56 +0000 (18:36 +0800)
committerHaomai Wang <haomai@xsky.com>
Mon, 21 Nov 2016 10:39:08 +0000 (18:39 +0800)
Signed-off-by: Haomai Wang <haomai@xsky.com>
src/msg/async/rdma/Infiniband.cc
src/msg/async/rdma/Infiniband.h
src/msg/async/rdma/RDMAConnectedSocketImpl.cc
src/msg/async/rdma/RDMAServerSocketImpl.cc

index 707814e3ffa53da6f41ae9e7bd23187fa79f3fa2..69b754fe3d7c185aaaf742e684fee455f41031f0 100644 (file)
@@ -65,14 +65,14 @@ void Device::binding_port(CephContext *cct, uint8_t port_num) {
   }\r
 }\r
 \r
-Infiniband::Infiniband(CephContext *cct, const std::string &device_name, uint8_t port_num): device_list(cct), net(cct)\r
+Infiniband::Infiniband(CephContext *cct, const std::string &device_name, uint8_t port_num): device_list(cct)\r
 {\r
   device = device_list.get_device(device_name.c_str());\r
   device->binding_port(cct, port_num);\r
   assert(device);\r
   ib_physical_port = device->active_port->get_port_num();\r
   pd = new ProtectionDomain(cct, device);\r
-  assert(net.set_nonblock(device->ctxt->async_fd) == 0);\r
+  assert(NetHandler(cct).set_nonblock(device->ctxt->async_fd) == 0);\r
 \r
   max_recv_wr = device->device_attr->max_srq_wr;\r
   if (max_recv_wr < cct->_conf->ms_async_rdma_receive_buffers) {\r
@@ -500,7 +500,7 @@ int Infiniband::CompletionChannel::init()
                           << cpp_strerror(errno) << dendl;\r
     return -1;\r
   }\r
-  int rc = infiniband.net.set_nonblock(channel->fd);\r
+  int rc = NetHandler(cct).set_nonblock(channel->fd);\r
   if (rc < 0) {\r
     ibv_destroy_comp_channel(channel);\r
     return -1;\r
index dd0e53a5c5e52b5dd476496c5c62d322a76649e6..aeb22ce7b04d6d812130469c029a2a229b928216 100644 (file)
@@ -397,7 +397,6 @@ class Infiniband {
   void gid_to_wire_gid(const union ibv_gid *gid, char wgid[]);\r
 \r
  public:\r
-  NetHandler net;\r
   explicit Infiniband(CephContext *c, const std::string &device_name, uint8_t p);\r
 \r
   /**\r
index 4227616c33142f82af566762bcfd1eb0227a76d8..b31c0b17bc14e2e915252a4ab687758329257a59 100644 (file)
@@ -108,21 +108,22 @@ int RDMAConnectedSocketImpl::activate()
 int RDMAConnectedSocketImpl::try_connect(const entity_addr_t& peer_addr, const SocketOptions &opts) {\r
   ldout(cct, 20) << __func__ << " nonblock:" << opts.nonblock << ", nodelay:"\r
                  << opts.nodelay << ", rbuf_size: " << opts.rcbuf_size << dendl;\r
-  tcp_fd = infiniband->net.connect(peer_addr);\r
+  NetHandler net(cct);\r
+  tcp_fd = net.connect(peer_addr);\r
 \r
   if (tcp_fd < 0) {\r
     return -errno;\r
   }\r
-  infiniband->net.set_close_on_exec(tcp_fd);\r
+  net.set_close_on_exec(tcp_fd);\r
 \r
-  int r = infiniband->net.set_socket_options(tcp_fd, opts.nodelay, opts.rcbuf_size);\r
+  int r = net.set_socket_options(tcp_fd, opts.nodelay, opts.rcbuf_size);\r
   if (r < 0) {\r
     ::close(tcp_fd);\r
     return -errno;\r
   }\r
 \r
   ldout(cct, 20) << __func__ << " tcp_fd: " << tcp_fd << dendl;\r
-  infiniband->net.set_priority(tcp_fd, opts.priority);\r
+  net.set_priority(tcp_fd, opts.priority);\r
   my_msg.peer_qpn = 0;\r
   r = infiniband->send_msg(cct, tcp_fd, my_msg);\r
   if (r < 0)\r
index 7b3789e38c83e06431071d83afce5df7fed6c7ab..c1fee33cad7be0aaf80c226081bf3586cb4acf5a 100644 (file)
@@ -24,7 +24,7 @@
 int RDMAServerSocketImpl::listen(entity_addr_t &sa, const SocketOptions &opt)\r
 {\r
   int rc = 0;\r
-  server_setup_socket = infiniband->net.create_socket(sa.get_family(), true);\r
+  server_setup_socket = net.create_socket(sa.get_family(), true);\r
   if (server_setup_socket < 0) {\r
     rc = -errno;\r
     lderr(cct) << __func__ << " failed to create server socket: "\r
@@ -80,19 +80,19 @@ int RDMAServerSocketImpl::accept(ConnectedSocket *sock, const SocketOptions &opt
   }\r
   ldout(cct, 20) << __func__ << " accepted a new QP, tcp_fd: " << sd << dendl;\r
 \r
-  infiniband->net.set_close_on_exec(sd);\r
-  int r = infiniband->net.set_nonblock(sd);\r
+  net.set_close_on_exec(sd);\r
+  int r = net.set_nonblock(sd);\r
   if (r < 0) {\r
     ::close(sd);\r
     return -errno;\r
   }\r
 \r
-  r = infiniband->net.set_socket_options(sd, opt.nodelay, opt.rcbuf_size);\r
+  r = net.set_socket_options(sd, opt.nodelay, opt.rcbuf_size);\r
   if (r < 0) {\r
     ::close(sd);\r
     return -errno;\r
   }\r
-  infiniband->net.set_priority(sd, opt.priority);\r
+  net.set_priority(sd, opt.priority);\r
 \r
   RDMAConnectedSocketImpl* server;\r
   //Worker* w = dispatcher->get_stack()->get_worker();\r