diff options
author | Ariel Nahum <arieln@mellanox.com> | 2015-01-18 14:51:07 (GMT) |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2015-02-17 20:33:14 (GMT) |
commit | 9a3119e4b787d8c855202eb0388b213f86f88714 (patch) | |
tree | f3bdbad5eb0031dae9a31472f2e97c0aba0428a7 /drivers/infiniband | |
parent | 6606e6a2ff2710b473838b291dc533cd8fc1471f (diff) | |
download | linux-9a3119e4b787d8c855202eb0388b213f86f88714.tar.xz |
IB/iser: Release the iscsi endpoint if ep_disconnect wasn't called
In some cases, we might reach the iser connection termination without
ep_disconnect being invoked (for example if user-space daemon doesn't
exists. In this case, we need to free the iscsi endpoint when we
remove the iser connection.
Signed-off-by: Ariel Nahum <arieln@mellanox.com>
Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r-- | drivers/infiniband/ulp/iser/iser_verbs.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/infiniband/ulp/iser/iser_verbs.c b/drivers/infiniband/ulp/iser/iser_verbs.c index f3e21ab..4065abe 100644 --- a/drivers/infiniband/ulp/iser/iser_verbs.c +++ b/drivers/infiniband/ulp/iser/iser_verbs.c @@ -646,9 +646,11 @@ void iser_conn_release(struct iser_conn *iser_conn) mutex_unlock(&ig.connlist_mutex); mutex_lock(&iser_conn->state_mutex); + /* In case we endup here without ep_disconnect being invoked. */ if (iser_conn->state != ISER_CONN_DOWN) { iser_warn("iser conn %p state %d, expected state down.\n", iser_conn, iser_conn->state); + iscsi_destroy_endpoint(iser_conn->ep); iser_conn->state = ISER_CONN_DOWN; } /* |