aboutsummaryrefslogtreecommitdiffstats
path: root/net/rds/ib.c
diff options
context:
space:
mode:
authorZach Brown <zach.brown@oracle.com>2010-06-25 17:58:16 -0400
committerAndy Grover <andy.grover@oracle.com>2010-09-08 21:16:33 -0400
commit8aeb1ba6630ffd44001ae9833842794df0107676 (patch)
treebc9a78da5281b371d3a9ecb2e00f7c381d9cd33b /net/rds/ib.c
parent24fa163a4bae74b3378d30e1bc776568cfca8121 (diff)
RDS/IB: destroy connections on rmmod
IB connections were not being destroyed during rmmod. First, recently IB device removal callback was changed to disconnect connections that used the removing device rather than destroying them. So connections with devices during rmmod were not being destroyed. Second, rds_ib_destroy_nodev_conns() was being called before connections are disassociated with devices. It would almost never find connections in the nodev list. We first get rid of rds_ib_destroy_conns(), which is no longer called, and refactor the existing caller into the main body of the function and get rid of the list and lock wrappers. Then we call rds_ib_destroy_nodev_conns() *after* ib_unregister_client() has removed the IB device from all the conns and put the conns on the nodev list. The result is that IB connections are destroyed by rmmod. Signed-off-by: Zach Brown <zach.brown@oracle.com>
Diffstat (limited to 'net/rds/ib.c')
-rw-r--r--net/rds/ib.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/rds/ib.c b/net/rds/ib.c
index fc14f637d645..af1ef18b6ff0 100644
--- a/net/rds/ib.c
+++ b/net/rds/ib.c
@@ -346,8 +346,8 @@ static void rds_ib_unregister_client(void)
346void rds_ib_exit(void) 346void rds_ib_exit(void)
347{ 347{
348 rds_info_deregister_func(RDS_INFO_IB_CONNECTIONS, rds_ib_ic_info); 348 rds_info_deregister_func(RDS_INFO_IB_CONNECTIONS, rds_ib_ic_info);
349 rds_ib_destroy_nodev_conns();
350 rds_ib_unregister_client(); 349 rds_ib_unregister_client();
350 rds_ib_destroy_nodev_conns();
351 rds_ib_sysctl_exit(); 351 rds_ib_sysctl_exit();
352 rds_ib_recv_exit(); 352 rds_ib_recv_exit();
353 rds_trans_unregister(&rds_ib_transport); 353 rds_trans_unregister(&rds_ib_transport);