Skip to content

Commit b0bb19a

Browse files
Greg Jumpervijay-suman
authored andcommitted
Revert "net/rds: Track "rds" module statistics per network namespace"
This reverts commit 68b8a1f112495b8d6aea6c57280d40fa91914324. Orabug: 35811116 Signed-off-by: Greg Jumper <[email protected]> Orabug: 35811116 LUCI => v6.6-rc7 Conflicts: - Resolved conflict at (*inc_copy_to_user)() line in net/rds/rds.h due to following new context line introducing (*recv_need_bufs)(). Signed-off-by: Greg Jumper <[email protected]> Reviewed-by: Sharath Srinivasan <[email protected]>
1 parent 1fb85bc commit b0bb19a

File tree

19 files changed

+137
-317
lines changed

19 files changed

+137
-317
lines changed

net/rds/af_rds.c

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1077,9 +1077,7 @@ static int __rds_create(struct socket *sock, struct sock *sk, int protocol)
10771077
rs->rs_rx_traces = 0;
10781078
rs->rs_pid = current->pid;
10791079
net = sock_net(sk);
1080-
10811080
rs->rs_rns = rds_ns(net);
1082-
rs->rs_stats = __rds_get_mod_stats(rs->rs_rns, RDS_MOD_RDS);
10831081

10841082
spin_lock_init(&rs->rs_snd_lock);
10851083
ret = rhashtable_init(&rs->rs_buf_info_tbl, &rs_buf_info_params);
@@ -1364,8 +1362,7 @@ static unsigned long parse_ul(char *ptr, unsigned long max)
13641362
return 0;
13651363
}
13661364

1367-
int rds_check_qos_threshold(struct rds_statistics __percpu *stats, u8 tos,
1368-
size_t payload_len)
1365+
int rds_check_qos_threshold(u8 tos, size_t payload_len)
13691366
{
13701367
if (rds_qos_threshold_action == 0)
13711368
return 0;
@@ -1375,10 +1372,10 @@ int rds_check_qos_threshold(struct rds_statistics __percpu *stats, u8 tos,
13751372
if (rds_qos_threshold_action == 1)
13761373
return 1;
13771374
else if (rds_qos_threshold_action == 2) {
1378-
rds_stats_inc(stats, s_qos_threshold_exceeded);
1375+
rds_stats_inc(s_qos_threshold_exceeded);
13791376
return 0;
13801377
} else if (rds_qos_threshold_action == 3) {
1381-
rds_stats_inc(stats, s_qos_threshold_exceeded);
1378+
rds_stats_inc(s_qos_threshold_exceeded);
13821379
return 1;
13831380
} else
13841381
return 0;
@@ -1450,6 +1447,7 @@ static void __exit rds_exit(void)
14501447
rds_conn_exit();
14511448
rds_sysctl_exit();
14521449
rds_threads_exit();
1450+
rds_stats_exit();
14531451
rds_page_exit();
14541452
rds_info_deregister_func(RDS_INFO_SOCKETS, rds_sock_info);
14551453
rds_info_deregister_func(RDS_INFO_RECV_MESSAGES, rds_sock_inc_info);
@@ -1491,9 +1489,12 @@ static int __init rds_init(void)
14911489
ret = rds_sysctl_init();
14921490
if (ret)
14931491
goto out_threads;
1494-
ret = proto_register(&rds_proto, 1);
1492+
ret = rds_stats_init();
14951493
if (ret)
14961494
goto out_sysctl;
1495+
ret = proto_register(&rds_proto, 1);
1496+
if (ret)
1497+
goto out_stats;
14971498
ret = sock_register(&rds_family_ops);
14981499
if (ret)
14991500
goto out_proto;
@@ -1511,6 +1512,8 @@ static int __init rds_init(void)
15111512

15121513
out_proto:
15131514
proto_unregister(&rds_proto);
1515+
out_stats:
1516+
rds_stats_exit();
15141517
out_sysctl:
15151518
rds_sysctl_exit();
15161519
out_threads:

net/rds/cong.c

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -322,16 +322,15 @@ void rds_cong_queue_updates(struct rds_cong_map *map)
322322
list_for_each_entry(conn, &map->m_conn_list, c_map_item) {
323323
if (!test_and_set_bit(RCMQ_BITOFF_CONGU_PENDING,
324324
&conn->c_map_queued)) {
325-
rds_stats_inc(conn->c_stats, s_cong_update_queued);
325+
rds_stats_inc(s_cong_update_queued);
326326
rds_cond_queue_send_work(conn->c_path, 0);
327327
}
328328
}
329329

330330
spin_unlock_irqrestore(&map->m_rns->rns_cong_lock, flags);
331331
}
332332

333-
void rds_cong_map_updated(struct rds_connection *conn,
334-
struct rds_cong_map *map, uint64_t portmask)
333+
void rds_cong_map_updated(struct rds_cong_map *map, uint64_t portmask)
335334
{
336335
bool qwork = false;
337336
struct rds_net *rns;
@@ -341,7 +340,7 @@ void rds_cong_map_updated(struct rds_connection *conn,
341340
map, &map->m_addr);
342341
rns = map->m_rns;
343342
rds_cong_monitor = rns->rns_cong_monitor;
344-
rds_stats_inc(conn->c_stats, s_cong_update_received);
343+
rds_stats_inc(s_cong_update_received);
345344
atomic_inc(&rns->rns_cong_generation);
346345
if (waitqueue_active(&map->m_waitq))
347346
wake_up(&map->m_waitq);
@@ -458,16 +457,8 @@ void rds_cong_remove_socket(struct rds_sock *rs)
458457
int rds_cong_wait(struct rds_cong_map *map, __be16 port, int nonblock,
459458
struct rds_sock *rs)
460459
{
461-
struct rds_statistics __percpu *stats;
462-
463460
if (!rds_cong_test_bit(map, port))
464461
return 0;
465-
466-
if (rs)
467-
stats = rs->rs_stats;
468-
else
469-
stats = __rds_get_mod_stats(rds_ns(current->nsproxy->net_ns),
470-
RDS_MOD_RDS);
471462
if (nonblock) {
472463
if (rs && rs->rs_cong_monitor) {
473464
atomic64_or(RDS_CONG_MONITOR_MASK(ntohs(port)), &rs->rs_cong_mask);
@@ -477,11 +468,11 @@ int rds_cong_wait(struct rds_cong_map *map, __be16 port, int nonblock,
477468
if (!rds_cong_test_bit(map, port))
478469
return 0;
479470
}
480-
rds_stats_inc(stats, s_cong_send_error);
471+
rds_stats_inc(s_cong_send_error);
481472
return -ENOBUFS;
482473
}
483474

484-
rds_stats_inc(stats, s_cong_send_blocked);
475+
rds_stats_inc(s_cong_send_blocked);
485476
rdsdebug("waiting on map %p for port %u\n", map, be16_to_cpu(port));
486477

487478
return wait_event_interruptible(map->m_waitq,

net/rds/connection.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ static void rds_conn_path_reset(struct rds_conn_path *cp)
169169
rdsdebug("connection %pI6c to %pI6c reset\n",
170170
&conn->c_laddr, &conn->c_faddr);
171171

172-
rds_stats_inc(conn->c_stats, s_conn_reset);
172+
rds_stats_inc(s_conn_reset);
173173
rds_send_path_reset(cp);
174174

175175
/* This function used to just set "cp->cp_flags = 0".

net/rds/ib.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -791,8 +791,7 @@ void rds_ib_recv_rebuild_caches(struct rds_ib_connection *ic);
791791
void rds_ib_recv_free_frag(struct rds_page_frag *frag, int nent);
792792
void __rds_ib_recv_refill(struct rds_connection *conn, int prefill, gfp_t gfp);
793793
void rds_ib_inc_free(struct rds_incoming *inc);
794-
int rds_ib_inc_copy_to_user(struct rds_sock *rs, struct rds_incoming *inc,
795-
struct iov_iter *to);
794+
int rds_ib_inc_copy_to_user(struct rds_incoming *inc, struct iov_iter *to);
796795
void rds_ib_recv_cqe_handler(struct rds_ib_connection *ic,
797796
struct ib_wc *wc,
798797
struct rds_ib_ack_state *state);
@@ -861,10 +860,10 @@ int rds_ib_xmit_atomic(struct rds_connection *conn, struct rm_atomic_op *op);
861860

862861
/* ib_stats.c */
863862
DECLARE_PER_CPU(struct rds_ib_statistics, rds_ib_stats);
864-
#define rds_ib_stats_inc(member) rds_stats_inc_which(&rds_ib_stats, member)
863+
#define rds_ib_stats_inc(member) rds_stats_inc_which(rds_ib_stats, member)
865864
#define rds_ib_stats_dec(member) rds_stats_dec_which(rds_ib_stats, member)
866865
#define rds_ib_stats_add(member, count) \
867-
rds_stats_add_which(&rds_ib_stats, member, count)
866+
rds_stats_add_which(rds_ib_stats, member, count)
868867
unsigned int rds_ib_stats_info_copy(struct rds_info_iterator *iter,
869868
unsigned int avail);
870869
void rds_ib_stats_print(const char *where);

net/rds/ib_recv.c

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -765,8 +765,7 @@ static struct lfstack_el *rds_ib_recv_cache_get(struct rds_ib_refill_cache *cach
765765
return item;
766766
}
767767

768-
int rds_ib_inc_copy_to_user(struct rds_sock *rs, struct rds_incoming *inc,
769-
struct iov_iter *to)
768+
int rds_ib_inc_copy_to_user(struct rds_incoming *inc, struct iov_iter *to)
770769
{
771770
struct rds_csum csum;
772771
struct rds_ib_connection *ic = inc->i_conn->c_transport_data;
@@ -803,7 +802,7 @@ int rds_ib_inc_copy_to_user(struct rds_sock *rs, struct rds_incoming *inc,
803802
if (ret != to_copy)
804803
return -EFAULT;
805804

806-
rds_stats_add(rs->rs_stats, s_copy_to_user, to_copy);
805+
rds_stats_add(s_copy_to_user, to_copy);
807806
atomic64_add(to_copy, &conn->c_recv_bytes);
808807
frag_off += to_copy;
809808
copied += to_copy;
@@ -829,7 +828,7 @@ int rds_ib_inc_copy_to_user(struct rds_sock *rs, struct rds_incoming *inc,
829828
}
830829

831830
if (unlikely(inc->i_payload_csum.csum_enabled) && copied) {
832-
rds_stats_inc(rs->rs_stats, s_recv_payload_csum_ib);
831+
rds_stats_inc(s_recv_payload_csum_ib);
833832
rds_check_csum(inc, &csum);
834833
}
835834

@@ -1129,7 +1128,7 @@ static void rds_ib_cong_recv(struct rds_connection *conn,
11291128
trace_rds_receive(&ibinc->ii_inc, NULL, conn, NULL,
11301129
&conn->c_faddr, &conn->c_laddr);
11311130

1132-
rds_cong_map_updated(conn, map, uncongested);
1131+
rds_cong_map_updated(map, uncongested);
11331132
}
11341133

11351134
static void rds_ib_process_recv(struct rds_connection *conn,
@@ -1168,7 +1167,7 @@ static void rds_ib_process_recv(struct rds_connection *conn,
11681167
rds_conn_drop(conn, DR_IB_HEADER_CORRUPTED, 0);
11691168
pr_warn("RDS/IB: incoming message from %pI6c has corrupted header - forcing a reconnect\n",
11701169
&conn->c_faddr);
1171-
rds_stats_inc(conn->c_stats, s_recv_drop_bad_checksum);
1170+
rds_stats_inc(s_recv_drop_bad_checksum);
11721171
return;
11731172
}
11741173

@@ -1269,7 +1268,7 @@ static void rds_ib_process_recv(struct rds_connection *conn,
12691268
* the complete frame, and after bumping the next_rx
12701269
* sequence. */
12711270
if (hdr->h_flags & RDS_FLAG_ACK_REQUIRED) {
1272-
rds_stats_inc(conn->c_stats, s_recv_ack_required);
1271+
rds_stats_inc(s_recv_ack_required);
12731272
state->ack_required = 1;
12741273
}
12751274

@@ -1309,7 +1308,7 @@ void rds_ib_srq_process_recv(struct rds_connection *conn,
13091308
printk(KERN_WARNING "RDS: from %pI6c has corrupted header - "
13101309
"forcing a reconnect\n",
13111310
&conn->c_faddr);
1312-
rds_stats_inc(conn->c_stats, s_recv_drop_bad_checksum);
1311+
rds_stats_inc(s_recv_drop_bad_checksum);
13131312
rds_ib_frag_free(ic, recv->r_frag);
13141313
recv->r_frag = NULL;
13151314
return;
@@ -1374,7 +1373,7 @@ void rds_ib_srq_process_recv(struct rds_connection *conn,
13741373
state->ack_next_valid = 1;
13751374
}
13761375
if (hdr->h_flags & RDS_FLAG_ACK_REQUIRED) {
1377-
rds_stats_inc(conn->c_stats, s_recv_ack_required);
1376+
rds_stats_inc(s_recv_ack_required);
13781377
state->ack_required = 1;
13791378
}
13801379
rds_inc_put(&ibinc->ii_inc);

net/rds/ib_send.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -162,12 +162,10 @@ static void rds_ib_send_unmap_rdma(struct rds_ib_connection *ic,
162162
wc_status, rds_rdma_send_complete);
163163

164164
if (op->op_write) {
165-
rds_stats_add(ic->conn->c_stats, s_send_rdma_bytes,
166-
op->op_bytes);
165+
rds_stats_add(s_send_rdma_bytes, op->op_bytes);
167166
atomic64_add(op->op_bytes, &ic->i_r_write_bytes);
168167
} else {
169-
rds_stats_add(ic->conn->c_stats, s_recv_rdma_bytes,
170-
op->op_bytes);
168+
rds_stats_add(s_recv_rdma_bytes, op->op_bytes);
171169
atomic64_add(op->op_bytes, &ic->i_r_read_bytes);
172170
}
173171
}
@@ -615,7 +613,7 @@ int rds_ib_xmit(struct rds_connection *conn, struct rds_message *rm,
615613
/* Do not send cong updates to IB loopback */
616614
if (conn->c_loopback
617615
&& rm->m_inc.i_hdr.h_flags & RDS_FLAG_CONG_BITMAP) {
618-
rds_cong_map_updated(conn, conn->c_fcong, ~(u64)0);
616+
rds_cong_map_updated(conn->c_fcong, ~(u64) 0);
619617
return sizeof(struct rds_header) + RDS_CONG_MAP_BYTES;
620618
}
621619

net/rds/info.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,12 @@
5959
* - info source copy must be pinned, may be "large"
6060
*/
6161

62+
struct rds_info_iterator {
63+
struct page **pages;
64+
void *addr;
65+
unsigned long offset;
66+
};
67+
6268
static DEFINE_SPINLOCK(rds_info_lock);
6369
static rds_info_func rds_info_funcs[RDS_INFO_LAST - RDS_INFO_FIRST + 1];
6470

@@ -206,7 +212,6 @@ int rds_info_getsockopt(struct socket *sock, int optname, char __user *optval,
206212
iter.pages = pages;
207213
iter.addr = NULL;
208214
iter.offset = start & (PAGE_SIZE - 1);
209-
iter.net = sock_net(sock->sk);
210215

211216
func(sock, len, &iter, &lens);
212217
BUG_ON(lens.each == 0);

net/rds/loop.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ static int rds_loop_xmit(struct rds_connection *conn, struct rds_message *rm,
6464
{
6565
/* Do not send cong updates to loopback */
6666
if (rm->m_inc.i_hdr.h_flags & RDS_FLAG_CONG_BITMAP) {
67-
rds_cong_map_updated(conn, conn->c_fcong, ~(u64)0);
67+
rds_cong_map_updated(conn->c_fcong, ~(u64) 0);
6868
return sizeof(struct rds_header) + RDS_CONG_MAP_BYTES;
6969
}
7070

net/rds/message.c

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -301,8 +301,7 @@ struct scatterlist *rds_message_alloc_sgs(struct rds_message *rm, int nents)
301301
return sg_ret;
302302
}
303303

304-
int rds_message_copy_from_user(struct rds_sock *rs, struct rds_message *rm,
305-
struct iov_iter *from)
304+
int rds_message_copy_from_user(struct rds_message *rm, struct iov_iter *from)
306305
{
307306
unsigned long to_copy, nbytes;
308307
unsigned long sg_off;
@@ -345,7 +344,7 @@ int rds_message_copy_from_user(struct rds_sock *rs, struct rds_message *rm,
345344
if (nbytes != to_copy)
346345
return -EFAULT;
347346

348-
rds_stats_add(rs->rs_stats, s_copy_from_user, to_copy);
347+
rds_stats_add(s_copy_from_user, to_copy);
349348
sg_off += to_copy;
350349

351350
if (sg_off == sg->length)
@@ -355,8 +354,7 @@ int rds_message_copy_from_user(struct rds_sock *rs, struct rds_message *rm,
355354
return ret;
356355
}
357356

358-
int rds_message_inc_copy_to_user(struct rds_sock *rs, struct rds_incoming *inc,
359-
struct iov_iter *to)
357+
int rds_message_inc_copy_to_user(struct rds_incoming *inc, struct iov_iter *to)
360358
{
361359
struct rds_csum csum;
362360
struct rds_connection *conn;
@@ -393,7 +391,7 @@ int rds_message_inc_copy_to_user(struct rds_sock *rs, struct rds_incoming *inc,
393391
if (ret != to_copy)
394392
return -EFAULT;
395393

396-
rds_stats_add(rs->rs_stats, s_copy_to_user, to_copy);
394+
rds_stats_add(s_copy_to_user, to_copy);
397395
atomic64_add(to_copy, &conn->c_recv_bytes);
398396
vec_off += to_copy;
399397
copied += to_copy;
@@ -405,7 +403,7 @@ int rds_message_inc_copy_to_user(struct rds_sock *rs, struct rds_incoming *inc,
405403
}
406404

407405
if (unlikely(inc->i_payload_csum.csum_enabled) && copied) {
408-
rds_stats_inc(rs->rs_stats, s_recv_payload_csum_loopback);
406+
rds_stats_inc(s_recv_payload_csum_loopback);
409407
rds_check_csum(inc, &csum);
410408
}
411409

net/rds/page.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ int rds_page_remainder_alloc(struct scatterlist *scat, unsigned long bytes,
7878
ret = -ENOMEM;
7979
} else {
8080
sg_set_page(scat, page, PAGE_SIZE, 0);
81-
rds_stats_inc(&rds_stats, s_page_allocs);
81+
rds_stats_inc(s_page_allocs);
8282
ret = 0;
8383
}
8484
goto out;
@@ -90,7 +90,7 @@ int rds_page_remainder_alloc(struct scatterlist *scat, unsigned long bytes,
9090
while (1) {
9191
/* avoid a tiny region getting stuck by tossing it */
9292
if (rem->r_page && bytes > (PAGE_SIZE - rem->r_offset)) {
93-
rds_stats_inc(&rds_stats, s_page_remainder_miss);
93+
rds_stats_inc(s_page_remainder_miss);
9494
rds_page_free(rem->r_page);
9595
rem->r_page = NULL;
9696
}
@@ -99,10 +99,10 @@ int rds_page_remainder_alloc(struct scatterlist *scat, unsigned long bytes,
9999
if (rem->r_page && bytes <= (PAGE_SIZE - rem->r_offset)) {
100100
sg_set_page(scat, rem->r_page, bytes, rem->r_offset);
101101
get_page(sg_page(scat));
102-
rds_stats_inc(&rds_stats, s_page_gets);
102+
rds_stats_inc(s_page_gets);
103103

104104
if (rem->r_offset != 0)
105-
rds_stats_inc(&rds_stats, s_page_remainder_hit);
105+
rds_stats_inc(s_page_remainder_hit);
106106

107107
/* some hw (e.g. sparc) require aligned memory */
108108
rem->r_offset += ALIGN(bytes, 8);
@@ -127,7 +127,7 @@ int rds_page_remainder_alloc(struct scatterlist *scat, unsigned long bytes,
127127
ret = -ENOMEM;
128128
break;
129129
}
130-
rds_stats_inc(&rds_stats, s_page_allocs);
130+
rds_stats_inc(s_page_allocs);
131131

132132
/* did someone race to fill the remainder before us? */
133133
if (rem->r_page) {

net/rds/rdma.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -721,7 +721,7 @@ static int rds_cmsg_rdma_args(struct rds_sock *rs, struct rds_message *rm,
721721
if (ret)
722722
rds_rdma_free_op(op);
723723

724-
rds_stats_inc(rs->rs_stats, s_send_rdma);
724+
rds_stats_inc(s_send_rdma);
725725

726726
return ret;
727727
}

0 commit comments

Comments
 (0)