iscsi,iser-target: Initiate termination only once

Since commit 0fc4ea701f ("Target/iser: Don't put isert_conn inside
disconnected handler") we put the conn kref in isert_wait_conn, so we
need .wait_conn to be invoked also in the error path.

Introduce call to isert_conn_terminate (called under lock)
which transitions the connection state to TERMINATING and calls
rdma_disconnect. If the state is already teminating, just bail
out back (temination started).

Also, make sure to destroy the connection when getting a connect
error event if didn't get to connected (state UP). Same for the
handling of REJECTED and UNREACHABLE cma events.

Squashed:

iscsi-target: Add call to wait_conn in establishment error flow

Reported-by: Slava Shwartsman <[email protected]>
Signed-off-by: Sagi Grimberg <[email protected]>
Cc: <[email protected]> # v3.10+
Signed-off-by: Nicholas Bellinger <[email protected]>
This commit is contained in:
Sagi Grimberg 2014-12-02 16:57:17 +02:00 • committed by Nicholas Bellinger
commit 954f23722b
3 changed files with 54 additions and 34 deletions

View file

@ -1204,6 +1204,9 @@ old_sess_out:
conn->sock = NULL;
}
if (conn->conn_transport->iscsit_wait_conn)
conn->conn_transport->iscsit_wait_conn(conn);
if (conn->conn_transport->iscsit_free_conn)
conn->conn_transport->iscsit_free_conn(conn);