IB/iser: Terminate connection before cleaning inflight tasks
authorSagi Grimberg <sagig@mellanox.com>
Sun, 7 Dec 2014 14:10:00 +0000 (16:10 +0200)
committerRoland Dreier <roland@purestorage.com>
Tue, 16 Dec 2014 02:11:44 +0000 (18:11 -0800)
When closing the connection, we should first terminate the connection
(in case it was not previously terminated) to guarantee the QP is in
error state and we are done with servicing IO. Only then go ahead with
tasks cleanup via iscsi_conn_stop.

Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/infiniband/ulp/iser/iscsi_iser.c

index bca97dcf0b4ea95d4b55e49d9a1fa19fbf09624a..0af32cdb34a181806d65ffbf4c59e2efea9b6067 100644 (file)
@@ -541,8 +541,8 @@ iscsi_iser_conn_stop(struct iscsi_cls_conn *cls_conn, int flag)
         */
        if (iser_conn) {
                mutex_lock(&iser_conn->state_mutex);
-               iscsi_conn_stop(cls_conn, flag);
                iser_conn_terminate(iser_conn);
+               iscsi_conn_stop(cls_conn, flag);
 
                /* unbind */
                iser_conn->iscsi_conn = NULL;