]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
RDS: make sure rds_send_xmit doesn't loop forever
authorChris Mason <chris.mason@oracle.com>
Fri, 3 Feb 2012 16:09:49 +0000 (11:09 -0500)
committerMukesh Kacker <mukesh.kacker@oracle.com>
Tue, 7 Jul 2015 23:41:34 +0000 (16:41 -0700)
rds_send_xmit can get stuck doing work on behalf of other senders.  This
breaks out if we've been working too long.  The work queue will get kicked
to finish off any other requests if our current process gives up.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
Signed-off-by: Bang Nguyen <bang.nguyen@oracle.com>
net/rds/send.c

index f69d269dac2e39574c463e44e77ff3b842a9537f..ff7428cc9ac1062d9ecd8a26f26aa03cbe781d2b 100644 (file)
@@ -428,7 +428,9 @@ over_batch:
                     !list_empty(&conn->c_send_queue)) &&
                    send_gen == conn->c_send_gen) {
                        rds_stats_inc(s_send_lock_queue_raced);
-                       goto restart;
+                       if (batch_count < 1024)
+                               goto restart;
+                       queue_delayed_work(rds_wq, &conn->c_send_w, 1);
                }
        }
 out: