mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-21 18:11:39 +00:00
e28ce90083
Change the rpcrdma_xprt_disconnect() function so that it no longer waits for the DISCONNECTED event. This prevents blocking if the remote is unresponsive. In rpcrdma_xprt_disconnect(), the transport's rpcrdma_ep is detached. Upon return from rpcrdma_xprt_disconnect(), the transport (r_xprt) is ready immediately for a new connection. The RDMA_CM_DEVICE_REMOVAL and RDMA_CM_DISCONNECTED events are now handled almost identically. However, because the lifetimes of rpcrdma_xprt structures and rpcrdma_ep structures are now independent, creating an rpcrdma_ep needs to take a module ref count. The ep now owns most of the hardware resources for a transport. Also, a kref is needed to ensure that rpcrdma_ep sticks around long enough for the cm_event_handler to finish. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com> |
||
---|---|---|
.. | ||
backchannel.c | ||
frwr_ops.c | ||
Makefile | ||
module.c | ||
rpc_rdma.c | ||
svc_rdma.c | ||
svc_rdma_backchannel.c | ||
svc_rdma_recvfrom.c | ||
svc_rdma_rw.c | ||
svc_rdma_sendto.c | ||
svc_rdma_transport.c | ||
transport.c | ||
verbs.c | ||
xprt_rdma.h |