Skip to content

Commit 9a827ee

Browse files
Greg Jumpervijay-suman
authored andcommitted
Revert "net/rds: Add basic support for network namespaces"
This reverts commit 8f154b3d6afb79d8130f99de427b5c7e8447eb41. Orabug: 35811116 Signed-off-by: Greg Jumper <[email protected]> Reviewed-by: Sharath Srinivasan <[email protected]>
1 parent 86a8cd3 commit 9a827ee

File tree

5 files changed

+43
-173
lines changed

5 files changed

+43
-173
lines changed

include/uapi/linux/rds.h

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -497,13 +497,4 @@ struct rds_rdma_send_notify {
497497
#define RDS_RDMA_REMOTE_COMPLETE 0x0080 /* Notify when data is available */
498498
#define RDS_SEND_NOTIFY_ME 0x0100 /* Notify when operation completes */
499499

500-
/* Value for the module family parameter. */
501-
enum {
502-
RDS_MOD_UNSPEC,
503-
RDS_MOD_RDS, /* rds module */
504-
505-
/* Add new module before this. */
506-
RDS_MOD_MAX,
507-
};
508-
509500
#endif /* IB_RDS_H */

net/rds/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ ccflags-y += -I$(src)
22
obj-$(CONFIG_RDS) += rds.o
33
rds-y := af_rds.o bind.o cong.o connection.o info.o message.o \
44
recv.o send.o stats.o sysctl.o threads.o transport.o \
5-
loop.o page.o rdma.o trace.o rds_ns.o
5+
loop.o page.o rdma.o trace.o
66

77
obj-$(CONFIG_RDS_RDMA) += rds_rdma.o
88
rds_rdma-y := rdma_transport.o \

net/rds/af_rds.c

Lines changed: 42 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,10 @@ char *rds_str_array(char **array, size_t elements, size_t index)
164164
}
165165
EXPORT_SYMBOL(rds_str_array);
166166

167+
/* this is just used for stats gathering :/ */
168+
static DEFINE_SPINLOCK(rds_sock_lock);
169+
static unsigned long rds_sock_count;
170+
static LIST_HEAD(rds_sock_list);
167171
struct wait_queue_head rds_poll_waitq[RDS_NMBR_WAITQ];
168172

169173
/* kmem cache slab for struct rds_buf_info */
@@ -214,10 +218,10 @@ static int rds_release(struct socket *sock)
214218
rhashtable_free_and_destroy(&rs->rs_buf_info_tbl, rds_buf_info_free,
215219
NULL);
216220

217-
mutex_lock(&rs->rs_rns->rns_sock_lock);
221+
spin_lock_bh(&rds_sock_lock);
218222
list_del_init(&rs->rs_item);
219-
rs->rs_rns->rns_sock_count--;
220-
mutex_unlock(&rs->rs_rns->rns_sock_lock);
223+
rds_sock_count--;
224+
spin_unlock_bh(&rds_sock_lock);
221225

222226
rds_trans_put(rs->rs_transport);
223227

@@ -397,10 +401,8 @@ static unsigned int rds_poll(struct file *file, struct socket *sock,
397401
static int rds_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
398402
{
399403
struct rds_sock *rs = rds_sk_to_rs(sock->sk);
400-
struct mutex *sock_lock;
401404
rds_tos_t tos;
402405

403-
sock_lock = &rs->rs_rns->rns_sock_lock;
404406
switch (cmd) {
405407
case SIOCRDSSETTOS:
406408
if (get_user(tos, (rds_tos_t __user *)arg))
@@ -410,21 +412,21 @@ static int rds_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
410412
rs->rs_transport->t_type == RDS_TRANS_TCP)
411413
tos = 0;
412414

413-
mutex_lock(sock_lock);
415+
spin_lock_bh(&rds_sock_lock);
414416
if (rs->rs_tos || rs->rs_conn) {
415-
mutex_unlock(sock_lock);
417+
spin_unlock_bh(&rds_sock_lock);
416418
return -EINVAL;
417419
}
418420
rs->rs_tos = tos;
419-
mutex_unlock(sock_lock);
420-
break;
421-
case SIOCRDSGETTOS:
422-
mutex_lock(sock_lock);
423-
tos = rs->rs_tos;
424-
mutex_unlock(sock_lock);
425-
if (put_user(tos, (rds_tos_t __user *)arg))
426-
return -EFAULT;
421+
spin_unlock_bh(&rds_sock_lock);
427422
break;
423+
case SIOCRDSGETTOS:
424+
spin_lock_bh(&rds_sock_lock);
425+
tos = rs->rs_tos;
426+
spin_unlock_bh(&rds_sock_lock);
427+
if (put_user(tos, (rds_tos_t __user *)arg))
428+
return -EFAULT;
429+
break;
428430
default:
429431
return -ENOIOCTLCMD;
430432
}
@@ -1055,7 +1057,6 @@ static void rds_sock_destruct(struct sock *sk)
10551057
static int __rds_create(struct socket *sock, struct sock *sk, int protocol)
10561058
{
10571059
struct rds_sock *rs;
1058-
struct net *net;
10591060
int ret;
10601061

10611062
sock_init_data(sock, sk);
@@ -1078,8 +1079,6 @@ static int __rds_create(struct socket *sock, struct sock *sk, int protocol)
10781079
rs->rs_conn_path = NULL;
10791080
rs->rs_rx_traces = 0;
10801081
rs->rs_pid = current->pid;
1081-
net = sock_net(sk);
1082-
rs->rs_rns = rds_ns(net);
10831082

10841083
spin_lock_init(&rs->rs_snd_lock);
10851084
ret = rhashtable_init(&rs->rs_buf_info_tbl, &rs_buf_info_params);
@@ -1094,10 +1093,10 @@ static int __rds_create(struct socket *sock, struct sock *sk, int protocol)
10941093
&rs->rs_bound_addr);
10951094
}
10961095

1097-
mutex_lock(&rs->rs_rns->rns_sock_lock);
1098-
list_add_tail(&rs->rs_item, &rs->rs_rns->rns_sock_list);
1099-
rs->rs_rns->rns_sock_count++;
1100-
mutex_unlock(&rs->rs_rns->rns_sock_lock);
1096+
spin_lock_bh(&rds_sock_lock);
1097+
list_add_tail(&rs->rs_item, &rds_sock_list);
1098+
rds_sock_count++;
1099+
spin_unlock_bh(&rds_sock_lock);
11011100

11021101
return 0;
11031102
}
@@ -1173,17 +1172,15 @@ static void rds_sock_inc_info(struct socket *sock, unsigned int len,
11731172
struct rds_info_iterator *iter,
11741173
struct rds_info_lengths *lens)
11751174
{
1176-
struct rds_net *rns;
11771175
struct rds_sock *rs;
11781176
struct rds_incoming *inc;
11791177
unsigned int total = 0;
11801178

11811179
len /= sizeof(struct rds_info_message);
11821180

1183-
rns = rds_ns(sock_net(sock->sk));
1184-
mutex_lock(&rns->rns_sock_lock);
1181+
spin_lock_bh(&rds_sock_lock);
11851182

1186-
list_for_each_entry(rs, &rns->rns_sock_list, rs_item) {
1183+
list_for_each_entry(rs, &rds_sock_list, rs_item) {
11871184
(void)rds_rs_to_sk(rs);
11881185
read_lock(&rs->rs_recv_lock);
11891186

@@ -1200,7 +1197,7 @@ static void rds_sock_inc_info(struct socket *sock, unsigned int len,
12001197
read_unlock(&rs->rs_recv_lock);
12011198
}
12021199

1203-
mutex_unlock(&rns->rns_sock_lock);
1200+
spin_unlock_bh(&rds_sock_lock);
12041201

12051202
lens->nr = total;
12061203
lens->each = sizeof(struct rds_info_message);
@@ -1211,17 +1208,15 @@ static void rds6_sock_inc_info(struct socket *sock, unsigned int len,
12111208
struct rds_info_iterator *iter,
12121209
struct rds_info_lengths *lens)
12131210
{
1214-
struct rds_net *rns;
12151211
struct rds_sock *rs;
12161212
struct rds_incoming *inc;
12171213
unsigned int total = 0;
12181214

12191215
len /= sizeof(struct rds6_info_message);
12201216

1221-
rns = rds_ns(sock_net(sock->sk));
1222-
mutex_lock(&rns->rns_sock_lock);
1217+
spin_lock_bh(&rds_sock_lock);
12231218

1224-
list_for_each_entry(rs, &rns->rns_sock_list, rs_item) {
1219+
list_for_each_entry(rs, &rds_sock_list, rs_item) {
12251220
read_lock(&rs->rs_recv_lock);
12261221

12271222
/* XXX too lazy to maintain counts.. */
@@ -1235,7 +1230,7 @@ static void rds6_sock_inc_info(struct socket *sock, unsigned int len,
12351230
read_unlock(&rs->rs_recv_lock);
12361231
}
12371232

1238-
mutex_unlock(&rns->rns_sock_lock);
1233+
spin_unlock_bh(&rds_sock_lock);
12391234

12401235
lens->nr = total;
12411236
lens->each = sizeof(struct rds6_info_message);
@@ -1254,26 +1249,16 @@ static void rds_sock_info(struct socket *sock, unsigned int len,
12541249
struct rds_info_lengths *lens)
12551250
{
12561251
struct rds_info_socket sinfo;
1257-
struct rds_net *rns;
1258-
u32 sock_count;
12591252
struct rds_sock *rs;
12601253

12611254
len /= sizeof(struct rds_info_socket);
12621255

1263-
rns = rds_ns(sock_net(sock->sk));
1264-
mutex_lock(&rns->rns_sock_lock);
1256+
spin_lock_bh(&rds_sock_lock);
12651257

1266-
if (len < rns->rns_sock_count) {
1267-
sock_count = rns->rns_sock_count;
1258+
if (len < rds_sock_count)
12681259
goto out;
1269-
} else {
1270-
sock_count = 0;
1271-
}
12721260

1273-
list_for_each_entry(rs, &rns->rns_sock_list, rs_item) {
1274-
if (!ipv6_addr_any(&rs->rs_bound_addr) &&
1275-
!ipv6_addr_v4mapped(&rs->rs_bound_addr))
1276-
continue;
1261+
list_for_each_entry(rs, &rds_sock_list, rs_item) {
12771262
sinfo.sndbuf = rds_sk_sndbuf(rs);
12781263
sinfo.rcvbuf = rds_sk_rcvbuf(rs);
12791264
sinfo.bound_addr = rs->rs_bound_addr_v4;
@@ -1288,14 +1273,13 @@ static void rds_sock_info(struct socket *sock, unsigned int len,
12881273
sinfo.cong = -1;
12891274

12901275
rds_info_copy(iter, &sinfo, sizeof(sinfo));
1291-
sock_count++;
12921276
}
12931277

12941278
out:
1295-
lens->nr = sock_count;
1279+
lens->nr = rds_sock_count;
12961280
lens->each = sizeof(struct rds_info_socket);
12971281

1298-
mutex_unlock(&rns->rns_sock_lock);
1282+
spin_unlock_bh(&rds_sock_lock);
12991283
}
13001284

13011285
#if IS_ENABLED(CONFIG_IPV6)
@@ -1304,18 +1288,16 @@ static void rds6_sock_info(struct socket *sock, unsigned int len,
13041288
struct rds_info_lengths *lens)
13051289
{
13061290
struct rds6_info_socket sinfo6;
1307-
struct rds_net *rns;
13081291
struct rds_sock *rs;
13091292

13101293
len /= sizeof(struct rds6_info_socket);
13111294

1312-
rns = rds_ns(sock_net(sock->sk));
1313-
mutex_lock(&rns->rns_sock_lock);
1295+
spin_lock_bh(&rds_sock_lock);
13141296

1315-
if (len < rns->rns_sock_count)
1297+
if (len < rds_sock_count)
13161298
goto out;
13171299

1318-
list_for_each_entry(rs, &rns->rns_sock_list, rs_item) {
1300+
list_for_each_entry(rs, &rds_sock_list, rs_item) {
13191301
sinfo6.sndbuf = rds_sk_sndbuf(rs);
13201302
sinfo6.rcvbuf = rds_sk_rcvbuf(rs);
13211303
sinfo6.bound_addr = rs->rs_bound_addr;
@@ -1333,10 +1315,10 @@ static void rds6_sock_info(struct socket *sock, unsigned int len,
13331315
}
13341316

13351317
out:
1336-
lens->nr = rns->rns_sock_count;
1318+
lens->nr = rds_sock_count;
13371319
lens->each = sizeof(struct rds6_info_socket);
1338-
mutex_unlock(&rns->rns_sock_lock);
13391320

1321+
spin_unlock_bh(&rds_sock_lock);
13401322
}
13411323
#endif
13421324

@@ -1446,7 +1428,6 @@ static void __exit rds_exit(void)
14461428
rds_cong_monitor_free();
14471429
sock_unregister(rds_family_ops.family);
14481430
proto_unregister(&rds_proto);
1449-
rds_unreg_pernet();
14501431
rds_conn_exit();
14511432
rds_cong_exit();
14521433
rds_sysctl_exit();
@@ -1477,18 +1458,16 @@ static int __init rds_init(void)
14771458
rds_rs_buf_info_slab = kmem_cache_create("rds_rs_buf_info",
14781459
sizeof(struct rs_buf_info),
14791460
0, SLAB_HWCACHE_ALIGN, NULL);
1480-
if (!rds_rs_buf_info_slab)
1481-
return -ENOMEM;
1482-
1483-
ret = rds_reg_pernet();
1484-
if (ret)
1485-
goto out_slab;
1461+
if (!rds_rs_buf_info_slab) {
1462+
ret = -ENOMEM;
1463+
goto out;
1464+
}
14861465

14871466
rds_bind_lock_init();
14881467

14891468
ret = rds_conn_init();
14901469
if (ret)
1491-
goto out_net;
1470+
goto out_slab;
14921471
ret = rds_threads_init();
14931472
if (ret)
14941473
goto out_conn;
@@ -1532,12 +1511,8 @@ static int __init rds_init(void)
15321511
out_conn:
15331512
rds_conn_exit();
15341513
rds_page_exit();
1535-
out_net:
1536-
rds_unreg_pernet();
1537-
15381514
out_slab:
15391515
kmem_cache_destroy(rds_rs_buf_info_slab);
1540-
15411516
out:
15421517
return ret;
15431518
}

net/rds/rds.h

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -245,13 +245,6 @@ enum rds_hb_state {
245245
HB_PONG_RCVD,
246246
};
247247

248-
struct rds_net {
249-
/* The following socket info is used for stats gathering */
250-
struct mutex rns_sock_lock;
251-
u32 rns_sock_count;
252-
struct list_head rns_sock_list;
253-
};
254-
255248
#define IS_CANONICAL(laddr, faddr) (htonl(laddr) < htonl(faddr))
256249

257250
/* Per mpath connection state */
@@ -940,7 +933,6 @@ struct rds_sock {
940933
void *rs_trans_private;
941934
pid_t rs_pid;
942935
unsigned char rs_inq;
943-
struct rds_net *rs_rns;
944936
};
945937

946938
static inline struct rds_sock *rds_sk_to_rs(const struct sock *sk)
@@ -1528,11 +1520,6 @@ struct rds_transport *rds_trans_get(int t_type);
15281520
int rds_trans_init(void);
15291521
void rds_trans_exit(void);
15301522

1531-
/* rds_ns.c */
1532-
struct rds_net *rds_ns(struct net *net);
1533-
int rds_reg_pernet(void);
1534-
void rds_unreg_pernet(void);
1535-
15361523
/* ib.c */
15371524

15381525
static inline void rds_page_free(struct page *page)

0 commit comments

Comments
 (0)