mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
iser-target: Fix session reset bug with RDMA_CM_EVENT_DISCONNECTED
This patch addresses a bug where RDMA_CM_EVENT_DISCONNECTED may occur
before the connection shutdown has been completed by rx/tx threads,
that causes isert_free_conn() to wait indefinately on ->conn_wait.
This patch allows isert_disconnect_work code to invoke rdma_disconnect
when isert_disconnect_work() process context is started by client
session reset before isert_free_conn() code has been reached.
It also adds isert_conn->conn_mutex protection for ->state within
isert_disconnect_work(), isert_cq_comp_err() and isert_free_conn()
code, along with isert_check_state() for wait_event usage.
(v2: Add explicit iscsit_cause_connection_reinstatement call
during isert_disconnect_work() to force conn reset)
Cc: [email protected] # 3.10+
Cc: Or Gerlitz <[email protected]>
Signed-off-by: Nicholas Bellinger <[email protected]>
This commit is contained in:
parent
186a964701
commit
b2cb96494d
4 changed files with 66 additions and 10 deletions
|
|
@ -908,6 +908,7 @@ void iscsit_cause_connection_reinstatement(struct iscsi_conn *conn, int sleep)
|
|||
wait_for_completion(&conn->conn_wait_comp);
|
||||
complete(&conn->conn_post_wait_comp);
|
||||
}
|
||||
EXPORT_SYMBOL(iscsit_cause_connection_reinstatement);
|
||||
|
||||
void iscsit_fall_back_to_erl0(struct iscsi_session *sess)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue