RDS: use locking on the connection hash list
authorChris Mason <chris.mason@oracle.com>
Tue, 11 May 2010 22:14:52 +0000 (15:14 -0700)
committerAndy Grover <andy.grover@oracle.com>
Thu, 9 Sep 2010 01:15:11 +0000 (18:15 -0700)
rds_conn_destroy really needs locking while it changes the
connection hash.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
net/rds/connection.c

index 9c249f394f29f03a08a00fa376f8943aed98e229..87df15b9f8e4b1072120f252520371f5e8c66146 100644 (file)
@@ -321,7 +321,10 @@ void rds_conn_destroy(struct rds_connection *conn)
                 "%pI4\n", conn, &conn->c_laddr,
                 &conn->c_faddr);
 
+       /* Ensure conn will not be scheduled for reconnect */
+       spin_lock_irq(&rds_conn_lock);
        hlist_del_init(&conn->c_hash_node);
+       spin_unlock_irq(&rds_conn_lock);
 
        /* wait for the rds thread to shut it down */
        atomic_set(&conn->c_state, RDS_CONN_ERROR);