]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
RDS: kick krdsd to send congestion map updates
authorChris Mason <chris.mason@oracle.com>
Fri, 3 Feb 2012 16:09:07 +0000 (11:09 -0500)
committerMukesh Kacker <mukesh.kacker@oracle.com>
Tue, 7 Jul 2015 23:41:32 +0000 (16:41 -0700)
We can get into a deadlock on the recv spinlock because
congestion map updates can be sent in the recev path.  This
pushes the work off to krdsd instead.

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

index a79da0cc98a799fed146858a9340ee79cb0793f2..34607ac4da53001bb4f0c8cab1f36e6622b5e996 100644 (file)
@@ -220,7 +220,7 @@ void rds_cong_queue_updates(struct rds_cong_map *map)
        list_for_each_entry(conn, &map->m_conn_list, c_map_item) {
                if (!test_and_set_bit(0, &conn->c_map_queued)) {
                        rds_stats_inc(s_cong_update_queued);
-                       rds_send_xmit(conn);
+                       queue_delayed_work(rds_wq, &conn->c_send_w, 0);
                }
        }