Commit 9144a803 authored by Chuck Lever's avatar Chuck Lever Committed by Anna Schumaker

xprtrdma: Refactor rpcrdma_ep_connect() and rpcrdma_ep_disconnect()

Clean up: Simplify the synopses of functions in the connect and
disconnect paths in preparation for combining the rpcrdma_ia and
struct rpcrdma_ep structures.
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
parent 97d0de88
...@@ -240,7 +240,7 @@ xprt_rdma_connect_worker(struct work_struct *work) ...@@ -240,7 +240,7 @@ xprt_rdma_connect_worker(struct work_struct *work)
struct rpc_xprt *xprt = &r_xprt->rx_xprt; struct rpc_xprt *xprt = &r_xprt->rx_xprt;
int rc; int rc;
rc = rpcrdma_ep_connect(&r_xprt->rx_ep, &r_xprt->rx_ia); rc = rpcrdma_xprt_connect(r_xprt);
xprt_clear_connecting(xprt); xprt_clear_connecting(xprt);
if (r_xprt->rx_ep.rep_connected > 0) { if (r_xprt->rx_ep.rep_connected > 0) {
xprt->stat.connect_count++; xprt->stat.connect_count++;
...@@ -284,7 +284,7 @@ xprt_rdma_destroy(struct rpc_xprt *xprt) ...@@ -284,7 +284,7 @@ xprt_rdma_destroy(struct rpc_xprt *xprt)
cancel_delayed_work_sync(&r_xprt->rx_connect_worker); cancel_delayed_work_sync(&r_xprt->rx_connect_worker);
rpcrdma_ep_disconnect(&r_xprt->rx_ep, &r_xprt->rx_ia); rpcrdma_xprt_disconnect(r_xprt);
rpcrdma_buffer_destroy(&r_xprt->rx_buf); rpcrdma_buffer_destroy(&r_xprt->rx_buf);
rpcrdma_ia_close(&r_xprt->rx_ia); rpcrdma_ia_close(&r_xprt->rx_ia);
...@@ -409,7 +409,7 @@ void xprt_rdma_close(struct rpc_xprt *xprt) ...@@ -409,7 +409,7 @@ void xprt_rdma_close(struct rpc_xprt *xprt)
if (ep->rep_connected == -ENODEV) if (ep->rep_connected == -ENODEV)
return; return;
rpcrdma_ep_disconnect(ep, ia); rpcrdma_xprt_disconnect(r_xprt);
out: out:
xprt->reestablish_timeout = 0; xprt->reestablish_timeout = 0;
......
...@@ -610,15 +610,17 @@ static int rpcrdma_ep_reconnect(struct rpcrdma_xprt *r_xprt) ...@@ -610,15 +610,17 @@ static int rpcrdma_ep_reconnect(struct rpcrdma_xprt *r_xprt)
return rc; return rc;
} }
/* /**
* Connect unconnected endpoint. * rpcrdma_xprt_connect - Connect an unconnected transport
* @r_xprt: controlling transport instance
*
* Returns 0 on success or a negative errno.
*/ */
int int rpcrdma_xprt_connect(struct rpcrdma_xprt *r_xprt)
rpcrdma_ep_connect(struct rpcrdma_ep *ep, struct rpcrdma_ia *ia)
{ {
struct rpcrdma_xprt *r_xprt = container_of(ia, struct rpcrdma_xprt,
rx_ia);
struct rpc_xprt *xprt = &r_xprt->rx_xprt; struct rpc_xprt *xprt = &r_xprt->rx_xprt;
struct rpcrdma_ep *ep = &r_xprt->rx_ep;
struct rpcrdma_ia *ia = &r_xprt->rx_ia;
int rc; int rc;
retry: retry:
...@@ -634,7 +636,7 @@ rpcrdma_ep_connect(struct rpcrdma_ep *ep, struct rpcrdma_ia *ia) ...@@ -634,7 +636,7 @@ rpcrdma_ep_connect(struct rpcrdma_ep *ep, struct rpcrdma_ia *ia)
goto out_noupdate; goto out_noupdate;
break; break;
case 1: case 1:
rpcrdma_ep_disconnect(ep, ia); rpcrdma_xprt_disconnect(r_xprt);
/* fall through */ /* fall through */
default: default:
rc = rpcrdma_ep_reconnect(r_xprt); rc = rpcrdma_ep_reconnect(r_xprt);
...@@ -668,7 +670,7 @@ rpcrdma_ep_connect(struct rpcrdma_ep *ep, struct rpcrdma_ia *ia) ...@@ -668,7 +670,7 @@ rpcrdma_ep_connect(struct rpcrdma_ep *ep, struct rpcrdma_ia *ia)
rc = rpcrdma_reqs_setup(r_xprt); rc = rpcrdma_reqs_setup(r_xprt);
if (rc) { if (rc) {
rpcrdma_ep_disconnect(ep, ia); rpcrdma_xprt_disconnect(r_xprt);
goto out; goto out;
} }
rpcrdma_mrs_create(r_xprt); rpcrdma_mrs_create(r_xprt);
...@@ -683,18 +685,16 @@ rpcrdma_ep_connect(struct rpcrdma_ep *ep, struct rpcrdma_ia *ia) ...@@ -683,18 +685,16 @@ rpcrdma_ep_connect(struct rpcrdma_ep *ep, struct rpcrdma_ia *ia)
} }
/** /**
* rpcrdma_ep_disconnect - Disconnect underlying transport * rpcrdma_xprt_disconnect - Disconnect underlying transport
* @ep: endpoint to disconnect * @r_xprt: controlling transport instance
* @ia: associated interface adapter
* *
* Caller serializes. Either the transport send lock is held, * Caller serializes. Either the transport send lock is held,
* or we're being called to destroy the transport. * or we're being called to destroy the transport.
*/ */
void void rpcrdma_xprt_disconnect(struct rpcrdma_xprt *r_xprt)
rpcrdma_ep_disconnect(struct rpcrdma_ep *ep, struct rpcrdma_ia *ia)
{ {
struct rpcrdma_xprt *r_xprt = container_of(ep, struct rpcrdma_xprt, struct rpcrdma_ep *ep = &r_xprt->rx_ep;
rx_ep); struct rpcrdma_ia *ia = &r_xprt->rx_ia;
struct rdma_cm_id *id = ia->ri_id; struct rdma_cm_id *id = ia->ri_id;
int rc; int rc;
......
...@@ -464,8 +464,8 @@ void rpcrdma_ia_close(struct rpcrdma_ia *); ...@@ -464,8 +464,8 @@ void rpcrdma_ia_close(struct rpcrdma_ia *);
/* /*
* Endpoint calls - xprtrdma/verbs.c * Endpoint calls - xprtrdma/verbs.c
*/ */
int rpcrdma_ep_connect(struct rpcrdma_ep *, struct rpcrdma_ia *); int rpcrdma_xprt_connect(struct rpcrdma_xprt *r_xprt);
void rpcrdma_ep_disconnect(struct rpcrdma_ep *, struct rpcrdma_ia *); void rpcrdma_xprt_disconnect(struct rpcrdma_xprt *r_xprt);
int rpcrdma_post_sends(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req); int rpcrdma_post_sends(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req);
void rpcrdma_post_recvs(struct rpcrdma_xprt *r_xprt, bool temp); void rpcrdma_post_recvs(struct rpcrdma_xprt *r_xprt, bool temp);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment