@@ -140,6 +140,7 @@ int rds_send_xmit(struct rds_connection *conn)
struct scatterlist *sg;
int ret = 0;
LIST_HEAD(to_be_dropped);
+ int same_rm = 0;
restart:
@@ -177,6 +178,18 @@ int rds_send_xmit(struct rds_connection *conn)
rm = conn->c_xmit_rm;
+ if (!rm) {
+ same_rm = 0;
+ } else {
+ same_rm++;
+ if (same_rm >= 4096) {
+ printk_ratelimited(KERN_ERR "RDS: Stuck rm\n");
+ cond_resched();
+ ret = -EAGAIN;
+ break;
+ }
+ }
+
/*
* If between sending messages, we can send a pending congestion
* map update.
Original patch by Andy Grover Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com> --- net/rds/send.c | 13 +++++++++++++ 1 files changed, 13 insertions(+), 0 deletions(-)