On Jun 3, 2015, at 2:40 PM, Shirley Ma <shirley.ma@xxxxxxxxxx> wrote: > When removing underlying RDMA device, the rmmod will hang forever if there > are any outstanding NFS/RDMA client mounts. The outstanding NFS/RDMA counts > could also prevent the server from shutting down. Further debugging shows > that the existing connections are not teared down and resource are not > released when receiving RDMA_CM_EVENT_DEVICE_REMOVAL event. It seems the > original code missing svc_xprt_put() in RDMA_CM_EVENT_REMOVAL event handler > thus svc_xprt_free is never invoked to release the existing connection resources. > > The patch has been passed removing, adding device back and forth without > stopping NFS/RDMA service. This will also allow a device to be unplugged > and swapped out without shutting down NFS service. > > Signed-off-by: Shirley Ma <shirley.ma@xxxxxxxxxx> Reviewed-by: Chuck Lever <chuck.lever@xxxxxxxxxx> > --- > net/sunrpc/xprtrdma/svc_rdma_transport.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c > index f609c1c..2b82569 100644 > --- a/net/sunrpc/xprtrdma/svc_rdma_transport.c > +++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c > @@ -673,6 +673,7 @@ static int rdma_cma_handler(struct rdma_cm_id *cma_id, > if (xprt) { > set_bit(XPT_CLOSE, &xprt->xpt_flags); > svc_xprt_enqueue(xprt); > + svc_xprt_put(xprt); > } > break; > default: > > Shirley -- Chuck Lever chuck[dot]lever[at]oracle[dot]com -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html