diff options
author | santosh.shilimkar@oracle.com <santosh.shilimkar@oracle.com> | 2015-10-30 16:49:10 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-11-02 21:36:23 +0100 |
commit | 7b5654349e4728021b9301e42ae16fa11f6832c8 (patch) | |
tree | abd5d5b3504c7fd67a1b39fe92cb5aadf7155e3d /net/rds/af_rds.c | |
parent | net: rds: changing the return type from int to void (diff) | |
download | linux-7b5654349e4728021b9301e42ae16fa11f6832c8.tar.xz linux-7b5654349e4728021b9301e42ae16fa11f6832c8.zip |
RDS: convert bind hash table to re-sizable hashtable
To further improve the RDS connection scalabilty on massive systems
where number of sockets grows into tens of thousands of sockets, there
is a need of larger bind hashtable. Pre-allocated 8K or 16K table is
not very flexible in terms of memory utilisation. The rhashtable
infrastructure gives us the flexibility to grow the hashtbable based
on use and also comes up with inbuilt efficient bucket(chain) handling.
Reviewed-by: David Miller <davem@davemloft.net>
Signed-off-by: Santosh Shilimkar <ssantosh@kernel.org>
Signed-off-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/rds/af_rds.c')
-rw-r--r-- | net/rds/af_rds.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/net/rds/af_rds.c b/net/rds/af_rds.c index 384ea1e3cd69..b5476aebd68d 100644 --- a/net/rds/af_rds.c +++ b/net/rds/af_rds.c @@ -573,6 +573,7 @@ static void rds_exit(void) rds_threads_exit(); rds_stats_exit(); rds_page_exit(); + rds_bind_lock_destroy(); rds_info_deregister_func(RDS_INFO_SOCKETS, rds_sock_info); rds_info_deregister_func(RDS_INFO_RECV_MESSAGES, rds_sock_inc_info); } @@ -582,11 +583,14 @@ static int rds_init(void) { int ret; - rds_bind_lock_init(); + ret = rds_bind_lock_init(); + if (ret) + goto out; ret = rds_conn_init(); if (ret) - goto out; + goto out_bind; + ret = rds_threads_init(); if (ret) goto out_conn; @@ -620,6 +624,8 @@ out_conn: rds_conn_exit(); rds_cong_exit(); rds_page_exit(); +out_bind: + rds_bind_lock_destroy(); out: return ret; } |