diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2020-02-21 17:01:05 -0500 |
---|---|---|
committer | Anna Schumaker <Anna.Schumaker@Netapp.com> | 2020-03-27 10:47:25 -0400 |
commit | e28ce90083f032ca0e8ea03478f5b6a38f5930f7 (patch) | |
tree | 470e92922a0c644c51b5625e4bcc716fe1383c36 /net/psample | |
parent | 745b734c9bb80559b8ca64ae688901afefc1c3fd (diff) | |
download | linux-e28ce90083f032ca0e8ea03478f5b6a38f5930f7.tar.bz2 |
xprtrdma: kmalloc rpcrdma_ep separate from rpcrdma_xprt
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>
Diffstat (limited to 'net/psample')
0 files changed, 0 insertions, 0 deletions