e28ce90083f0 xprtrdma: kmalloc rpcrdma_ep separate from rpcrdma_xprt
,解决: 存储端口故障后,ip切换要2分钟,2分钟内均归零。
修改rpcrdma_xprt_disconnect()函数,使其不再等待DISCONNECTED事件。这可以防止在远程无响应时阻塞。
在rpcrdma_xprt_disconnect()中,传输的rpcrdma_ep被分离。返回rpcrdma_xprt_disconnect()后,传输(r_xprt)立即准备好进行新的连接。
现在,RDMA_CM_DEVICE_REMOVAL和RDMA_CM_DISCONNECTED事件几乎以相同的方式处理。
然而,由于rpcrdma_xprt结构和rpcrdma_ep结构的生命周期现在是独立的,创建一个rpcrdma_ep需要增加一个模块引用计数。rpcrdma_ep现在拥有传输的大部分硬件资源。
此外,需要一个kref来确保rpcrdma_ep在cm_event_handler完成之前能够保留足够长的时间。