Skip to content

Commit

Permalink
rds: check for excessive looping in rds_send_xmit
Browse files Browse the repository at this point in the history
Original commit from 2011 updated to include a change by
Yuval Shaia <yuval.shaia@oracle.com>
that adds a new statistic counter "send_stuck_rm"
to capture the messages looping exessively
in the send path.

Signed-off-by: Gerd Rausch <gerd.rausch@oracle.com>
Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Andy Grover authored and David S. Miller committed Aug 15, 2019
1 parent 55c70ca commit 11740ef
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 1 deletion.
2 changes: 1 addition & 1 deletion net/rds/rds.h
Original file line number Diff line number Diff line change
Expand Up @@ -717,7 +717,7 @@ struct rds_statistics {
uint64_t s_cong_send_blocked;
uint64_t s_recv_bytes_added_to_socket;
uint64_t s_recv_bytes_removed_from_socket;

uint64_t s_send_stuck_rm;
};

/* af_rds.c */
Expand Down
12 changes: 12 additions & 0 deletions net/rds/send.c
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ int rds_send_xmit(struct rds_conn_path *cp)
LIST_HEAD(to_be_dropped);
int batch_count;
unsigned long send_gen = 0;
int same_rm = 0;

restart:
batch_count = 0;
Expand Down Expand Up @@ -200,6 +201,17 @@ int rds_send_xmit(struct rds_conn_path *cp)

rm = cp->cp_xmit_rm;

if (!rm) {
same_rm = 0;
} else {
same_rm++;
if (same_rm >= 4096) {
rds_stats_inc(s_send_stuck_rm);
ret = -EAGAIN;
break;
}
}

/*
* If between sending messages, we can send a pending congestion
* map update.
Expand Down
1 change: 1 addition & 0 deletions net/rds/stats.c
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ static const char *const rds_stat_names[] = {
"cong_send_blocked",
"recv_bytes_added_to_sock",
"recv_bytes_freed_fromsock",
"send_stuck_rm",
};

void rds_stats_info_copy(struct rds_info_iterator *iter,
Expand Down

0 comments on commit 11740ef

Please sign in to comment.