NFS/RDMA Release resources in svcrdma when device is removed
authorShirley Ma <shirley.ma@oracle.com>
Thu, 9 Jul 2015 20:45:08 +0000 (16:45 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Mon, 20 Jul 2015 18:58:47 +0000 (14:58 -0400)
commitff79c74dcace8fec62706d0bef00b6680b477fdb
treecfef2fd4176988a6f9b2b81a9500884cbefd181f
parent7b8f4586532f36c5541a15d072576e7e89a5df75
NFS/RDMA Release resources in svcrdma when device is removed

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.

BugLink: https://bugzilla.linux-nfs.org/show_bug.cgi?id=252
Signed-off-by: Shirley Ma <shirley.ma@oracle.com>
Reviewed-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
net/sunrpc/xprtrdma/svc_rdma_transport.c