dlm: fix reconnecting but not sending data
[cascardo/linux.git] / fs / dlm / lowcomms.c
index 4ea64e9..cd008c9 100644 (file)
@@ -1020,6 +1020,7 @@ socket_err:
 
 out:
        mutex_unlock(&con->sock_mutex);
+       set_bit(CF_WRITE_PENDING, &con->flags);
 }
 
 /* Connect a new socket to its peer */
@@ -1114,6 +1115,7 @@ out_err:
        }
 out:
        mutex_unlock(&con->sock_mutex);
+       set_bit(CF_WRITE_PENDING, &con->flags);
        return;
 }
 
@@ -1502,10 +1504,8 @@ static void process_send_sockets(struct work_struct *work)
 {
        struct connection *con = container_of(work, struct connection, swork);
 
-       if (test_and_clear_bit(CF_CONNECT_PENDING, &con->flags)) {
+       if (test_and_clear_bit(CF_CONNECT_PENDING, &con->flags))
                con->connect_action(con);
-               set_bit(CF_WRITE_PENDING, &con->flags);
-       }
        if (test_and_clear_bit(CF_WRITE_PENDING, &con->flags))
                send_to_sock(con);
 }