Skip to content

Commit b5757da

Browse files
Greg Jumpervijay-suman
authored andcommitted
Revert "net/rds: Use per-namespace loopback connection lists"
This reverts commit 0c215cfe7df9c670d2a10d90294d94b4f36e33f7. Orabug: 35811116 Signed-off-by: Greg Jumper <[email protected]> Reviewed-by: Sharath Srinivasan <[email protected]>
1 parent f6c5758 commit b5757da

File tree

5 files changed

+17
-35
lines changed

5 files changed

+17
-35
lines changed

net/rds/connection.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1193,6 +1193,8 @@ int rds_conn_init(void)
11931193

11941194
void rds_conn_exit(void)
11951195
{
1196+
rds_loop_exit();
1197+
11961198
kmem_cache_destroy(rds_conn_slab);
11971199

11981200
rds_info_deregister_func(RDS_INFO_CONNECTIONS, rds_conn_info);

net/rds/loop.c

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@
3838
#include "loop.h"
3939
#include "rds_single_path.h"
4040

41+
static DEFINE_SPINLOCK(loop_conns_lock);
42+
static LIST_HEAD(loop_conns);
43+
4144
/*
4245
* This 'loopback' transport is a special case for flows that originate
4346
* and terminate on the same machine.
@@ -109,7 +112,6 @@ static int rds_loop_recv_path(struct rds_conn_path *cp)
109112
struct rds_loop_connection {
110113
struct list_head loop_node;
111114
struct rds_connection *conn;
112-
struct rds_net *rns;
113115
};
114116

115117
/*
@@ -130,11 +132,10 @@ static int rds_loop_conn_alloc(struct rds_connection *conn, gfp_t gfp)
130132
INIT_LIST_HEAD(&lc->loop_node);
131133
lc->conn = conn;
132134
conn->c_transport_data = lc;
133-
lc->rns = conn->c_rns;
134135

135-
spin_lock_irqsave(&lc->rns->rns_loop_conns_lock, flags);
136-
list_add_tail(&lc->loop_node, &lc->rns->rns_loop_conns);
137-
spin_unlock_irqrestore(&lc->rns->rns_loop_conns_lock, flags);
136+
spin_lock_irqsave(&loop_conns_lock, flags);
137+
list_add_tail(&lc->loop_node, &loop_conns);
138+
spin_unlock_irqrestore(&loop_conns_lock, flags);
138139

139140
return 0;
140141
}
@@ -145,9 +146,9 @@ static void rds_loop_conn_free(void *arg)
145146
unsigned long flags;
146147

147148
rdsdebug("lc %p\n", lc);
148-
spin_lock_irqsave(&lc->rns->rns_loop_conns_lock, flags);
149+
spin_lock_irqsave(&loop_conns_lock, flags);
149150
list_del(&lc->loop_node);
150-
spin_unlock_irqrestore(&lc->rns->rns_loop_conns_lock, flags);
151+
spin_unlock_irqrestore(&loop_conns_lock, flags);
151152
kfree(lc);
152153
}
153154

@@ -161,23 +162,16 @@ static void rds_loop_conn_path_shutdown(struct rds_conn_path *cp)
161162
{
162163
}
163164

164-
int rds_loop_net_init(struct rds_net *rns)
165-
{
166-
spin_lock_init(&rns->rns_loop_conns_lock);
167-
INIT_LIST_HEAD(&rns->rns_loop_conns);
168-
return 0;
169-
}
170-
171-
void rds_loop_net_exit(struct rds_net *rns)
165+
void rds_loop_exit(void)
172166
{
173167
struct rds_loop_connection *lc, *_lc;
174168
LIST_HEAD(tmp_list);
175169

176170
/* avoid calling conn_destroy with irqs off */
177-
spin_lock_irq(&rns->rns_loop_conns_lock);
178-
list_splice(&rns->rns_loop_conns, &tmp_list);
179-
INIT_LIST_HEAD(&rns->rns_loop_conns);
180-
spin_unlock_irq(&rns->rns_loop_conns_lock);
171+
spin_lock_irq(&loop_conns_lock);
172+
list_splice(&loop_conns, &tmp_list);
173+
INIT_LIST_HEAD(&loop_conns);
174+
spin_unlock_irq(&loop_conns_lock);
181175

182176
list_for_each_entry_safe(lc, _lc, &tmp_list, loop_node) {
183177
WARN_ON(lc->conn->c_passive);

net/rds/loop.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
/* loop.c */
55
extern struct rds_transport rds_loop_transport;
66

7-
int rds_loop_net_init(struct rds_net *rns);
8-
void rds_loop_net_exit(struct rds_net *rns);
7+
void rds_loop_exit(void);
98

109
#endif

net/rds/rds.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -289,9 +289,6 @@ struct rds_net {
289289
spinlock_t rns_cong_lock; /* protect congestion maps */
290290
struct rb_root rns_cong_tree;
291291

292-
spinlock_t rns_loop_conns_lock; /* protect loopback conns */
293-
struct list_head rns_loop_conns;
294-
295292
struct mutex rns_mod_mutex; /* protect rns_mod_stats */
296293

297294
/* Array storing different modules' information. It is indexed

net/rds/rds_ns.c

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
#include <net/net_namespace.h>
3434
#include <net/netns/generic.h>
3535
#include "rds.h"
36-
#include "loop.h"
3736

3837
static int rds_netid;
3938

@@ -71,19 +70,12 @@ static __net_init int rds_init_net(struct net *net)
7170
if (ret)
7271
goto err_conn;
7372

74-
ret = rds_cong_net_init(rns);
73+
ret = rds_cong_net_init(rns);
7574
if (ret)
7675
goto err_cong;
7776

78-
ret = rds_loop_net_init(rns);
79-
if (ret)
80-
goto err_loop;
81-
8277
return 0;
8378

84-
err_loop:
85-
rds_cong_net_exit(rns);
86-
8779
err_cong:
8880
rds_conn_tbl_net_exit(rns);
8981

@@ -103,10 +95,8 @@ static void rds_exit_net(struct net *net)
10395
{
10496
struct rds_net *rns = rds_ns(net);
10597

106-
rds_loop_net_exit(rns);
10798
rds_bind_tbl_net_exit(rns);
10899
rds_cong_net_exit(rns);
109-
rds_conn_tbl_net_exit(rns);
110100
rds_stats_net_exit(net);
111101
mutex_destroy(&rns->rns_sock_lock);
112102
mutex_destroy(&rns->rns_mod_mutex);

0 commit comments

Comments
 (0)