[rds-devel] [PATCH 2/2] RDS: clear RDS_CONN_CONNECTING bit when connecting process finished and connection established

Vladimir Sokolovsky vlad at mellanox.co.il
Wed Jun 6 08:18:40 PDT 2007


RDS: clear RDS_CONN_CONNECTING bit when connecting 
process finished and connection established

Signed-off-by: Vladimir Sokolovsky <vlad at mellanox.co.il>
---

diff --git a/net/rds/threads.c b/net/rds/threads.c
index 2fd9452..004cc29 100644
--- a/net/rds/threads.c
+++ b/net/rds/threads.c
@@ -52,6 +52,7 @@ EXPORT_SYMBOL_GPL(rds_wq);
 void rds_connect_complete(struct rds_connection *conn)
 {
        set_bit(RDS_CONN_CONNECTED, &conn->c_status);
+       clear_bit(RDS_CONN_CONNECTING, &conn->c_status);
        smp_mb__after_clear_bit();
        conn->c_reconnect_jiffies = 0;
        set_bit(0, &conn->c_map_queued);
@@ -120,7 +121,7 @@ void rds_shutdown_worker(struct work_struct *work)

        /* shut it down if .conn_connect succeeded */
        was_conn = test_and_clear_bit(RDS_CONN_CONNECTED, &conn->c_status);
-       if (test_and_clear_bit(RDS_CONN_CONNECTING, &conn->c_status)) {
+       if (was_conn || test_and_clear_bit(RDS_CONN_CONNECTING, &conn->c_status)) {
                down(&conn->c_send_sem);
                conn->c_trans->conn_shutdown(conn);
                rds_conn_reset(conn);

-- 
Vladimir Sokolovsky <vlad at mellanox.co.il>
Mellanox Technologies Ltd.



More information about the rds-devel mailing list