Original patch by Andy Grover

Signed-off-by: Sowmini Varadhan <sowmini.varad...@oracle.com>
---
 net/rds/send.c |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/net/rds/send.c b/net/rds/send.c
index 44672be..b1741a2 100644
--- a/net/rds/send.c
+++ b/net/rds/send.c
@@ -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.
-- 
1.7.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to