From: Haomai Wang Date: Mon, 21 Nov 2016 10:36:56 +0000 (+0800) Subject: msg/async/rdma: avoid use global NetHandler which refer to cephcontext X-Git-Tag: v11.1.0~197^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=199aebe8352ec7f733fc80b1e49ac2720bad0123;p=ceph.git msg/async/rdma: avoid use global NetHandler which refer to cephcontext Signed-off-by: Haomai Wang --- diff --git a/src/msg/async/rdma/Infiniband.cc b/src/msg/async/rdma/Infiniband.cc index 707814e3ffa53..69b754fe3d7c1 100644 --- a/src/msg/async/rdma/Infiniband.cc +++ b/src/msg/async/rdma/Infiniband.cc @@ -65,14 +65,14 @@ void Device::binding_port(CephContext *cct, uint8_t port_num) { } } -Infiniband::Infiniband(CephContext *cct, const std::string &device_name, uint8_t port_num): device_list(cct), net(cct) +Infiniband::Infiniband(CephContext *cct, const std::string &device_name, uint8_t port_num): device_list(cct) { device = device_list.get_device(device_name.c_str()); device->binding_port(cct, port_num); assert(device); ib_physical_port = device->active_port->get_port_num(); pd = new ProtectionDomain(cct, device); - assert(net.set_nonblock(device->ctxt->async_fd) == 0); + assert(NetHandler(cct).set_nonblock(device->ctxt->async_fd) == 0); max_recv_wr = device->device_attr->max_srq_wr; if (max_recv_wr < cct->_conf->ms_async_rdma_receive_buffers) { @@ -500,7 +500,7 @@ int Infiniband::CompletionChannel::init() << cpp_strerror(errno) << dendl; return -1; } - int rc = infiniband.net.set_nonblock(channel->fd); + int rc = NetHandler(cct).set_nonblock(channel->fd); if (rc < 0) { ibv_destroy_comp_channel(channel); return -1; diff --git a/src/msg/async/rdma/Infiniband.h b/src/msg/async/rdma/Infiniband.h index dd0e53a5c5e52..aeb22ce7b04d6 100644 --- a/src/msg/async/rdma/Infiniband.h +++ b/src/msg/async/rdma/Infiniband.h @@ -397,7 +397,6 @@ class Infiniband { void gid_to_wire_gid(const union ibv_gid *gid, char wgid[]); public: - NetHandler net; explicit Infiniband(CephContext *c, const std::string &device_name, uint8_t p); /** diff --git a/src/msg/async/rdma/RDMAConnectedSocketImpl.cc b/src/msg/async/rdma/RDMAConnectedSocketImpl.cc index 4227616c33142..b31c0b17bc14e 100644 --- a/src/msg/async/rdma/RDMAConnectedSocketImpl.cc +++ b/src/msg/async/rdma/RDMAConnectedSocketImpl.cc @@ -108,21 +108,22 @@ int RDMAConnectedSocketImpl::activate() int RDMAConnectedSocketImpl::try_connect(const entity_addr_t& peer_addr, const SocketOptions &opts) { ldout(cct, 20) << __func__ << " nonblock:" << opts.nonblock << ", nodelay:" << opts.nodelay << ", rbuf_size: " << opts.rcbuf_size << dendl; - tcp_fd = infiniband->net.connect(peer_addr); + NetHandler net(cct); + tcp_fd = net.connect(peer_addr); if (tcp_fd < 0) { return -errno; } - infiniband->net.set_close_on_exec(tcp_fd); + net.set_close_on_exec(tcp_fd); - int r = infiniband->net.set_socket_options(tcp_fd, opts.nodelay, opts.rcbuf_size); + int r = net.set_socket_options(tcp_fd, opts.nodelay, opts.rcbuf_size); if (r < 0) { ::close(tcp_fd); return -errno; } ldout(cct, 20) << __func__ << " tcp_fd: " << tcp_fd << dendl; - infiniband->net.set_priority(tcp_fd, opts.priority); + net.set_priority(tcp_fd, opts.priority); my_msg.peer_qpn = 0; r = infiniband->send_msg(cct, tcp_fd, my_msg); if (r < 0) diff --git a/src/msg/async/rdma/RDMAServerSocketImpl.cc b/src/msg/async/rdma/RDMAServerSocketImpl.cc index 7b3789e38c83e..c1fee33cad7be 100644 --- a/src/msg/async/rdma/RDMAServerSocketImpl.cc +++ b/src/msg/async/rdma/RDMAServerSocketImpl.cc @@ -24,7 +24,7 @@ int RDMAServerSocketImpl::listen(entity_addr_t &sa, const SocketOptions &opt) { int rc = 0; - server_setup_socket = infiniband->net.create_socket(sa.get_family(), true); + server_setup_socket = net.create_socket(sa.get_family(), true); if (server_setup_socket < 0) { rc = -errno; lderr(cct) << __func__ << " failed to create server socket: " @@ -80,19 +80,19 @@ int RDMAServerSocketImpl::accept(ConnectedSocket *sock, const SocketOptions &opt } ldout(cct, 20) << __func__ << " accepted a new QP, tcp_fd: " << sd << dendl; - infiniband->net.set_close_on_exec(sd); - int r = infiniband->net.set_nonblock(sd); + net.set_close_on_exec(sd); + int r = net.set_nonblock(sd); if (r < 0) { ::close(sd); return -errno; } - r = infiniband->net.set_socket_options(sd, opt.nodelay, opt.rcbuf_size); + r = net.set_socket_options(sd, opt.nodelay, opt.rcbuf_size); if (r < 0) { ::close(sd); return -errno; } - infiniband->net.set_priority(sd, opt.priority); + net.set_priority(sd, opt.priority); RDMAConnectedSocketImpl* server; //Worker* w = dispatcher->get_stack()->get_worker();