isert: close isert connection earlier

We want to close the connection not only when timewait
exit event arrive, but also on some other events.

Signed-off-by: Israel Rukshin <israelr@mellanox.com>

git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6948 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Israel Rukshin
2016-08-17 07:28:06 +00:00
parent 9c891f321e
commit dbf6975a3b
2 changed files with 7 additions and 6 deletions

View File

@@ -162,6 +162,7 @@ struct isert_cq {
#define ISERT_CONNECTION_EST 3
#define ISERT_DRAINED_RQ 4
#define ISERT_DRAINED_SQ 5
#define ISERT_CONNECTION_CLOSE 6
struct isert_connection {
struct iscsi_conn iscsi ____cacheline_aligned;

View File

@@ -1388,12 +1388,12 @@ void isert_conn_free(struct isert_connection *isert_conn)
kref_put(&isert_conn->kref, isert_kref_free);
}
static int isert_cm_timewait_exit_handler(struct rdma_cm_id *cm_id,
static int isert_cm_disconnected_handler(struct rdma_cm_id *cm_id,
struct rdma_cm_event *event)
{
struct isert_connection *isert_conn = cm_id->qp->qp_context;
isert_sched_conn_closed(isert_conn);
if (!test_and_set_bit(ISERT_CONNECTION_CLOSE, &isert_conn->flags))
isert_sched_conn_closed(isert_conn);
return 0;
}
@@ -1684,15 +1684,15 @@ static int isert_cm_evt_handler(struct rdma_cm_id *cm_id,
case RDMA_CM_EVENT_CONNECT_ERROR:
case RDMA_CM_EVENT_REJECTED:
case RDMA_CM_EVENT_ADDR_CHANGE:
case RDMA_CM_EVENT_DISCONNECTED:
err = isert_cm_disconnect_handler(cm_id, cm_ev);
break;
case RDMA_CM_EVENT_ADDR_CHANGE:
case RDMA_CM_EVENT_DISCONNECTED:
case RDMA_CM_EVENT_DEVICE_REMOVAL:
case RDMA_CM_EVENT_TIMEWAIT_EXIT:
isert_cm_disconnect_handler(cm_id, cm_ev);
err = isert_cm_timewait_exit_handler(cm_id, cm_ev);
err = isert_cm_disconnected_handler(cm_id, cm_ev);
break;
case RDMA_CM_EVENT_MULTICAST_JOIN: