linux_dsm_epyc7002/drivers/infiniband/ulp/iser
Ariel Nahum b73c3adabd IB/iser: Simplify connection management
iSER relies on refcounting to manage iser connections establishment
and teardown.

Following commit 39ff05dbbb ("IB/iser: Enhance disconnection logic
for multi-pathing"), iser connection maintain 3 references:

 - iscsi_endpoint (at creation stage)
 - cma_id (at connection request stage)
 - iscsi_conn (at bind stage)

We can avoid taking explicit refcounts by correctly serializing iser
teardown flows (graceful and non-graceful).

Our approach is to trigger a scheduled work to handle ordered teardown
by gracefully waiting for 2 cleanup stages to complete:

 1. Cleanup of live pending tasks indicated by iscsi_conn_stop completion
 2. Flush errors processing

Each completed stage will notify a waiting worker thread when it is
done to allow teardwon continuation.

Since iSCSI connection establishment may trigger endpoint disconnect
without a successful endpoint connect, we rely on the iscsi <-> iser
binding (.conn_bind) to learn about the teardown policy we should take
wrt cleanup stages.

Since all cleanup worker threads are scheduled (release_wq) in
.ep_disconnect it is safe to assume that when module_exit is called,
all cleanup workers are already scheduled. Thus proper module unload
shall flush all scheduled works before allowing safe exit, to
guarantee no resources got left behind.

Signed-off-by: Ariel Nahum <arieln@mellanox.com>
Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
Reviewed-by: Roi Dayan <roid@mellanox.com>
Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
2014-05-26 08:19:48 -07:00
..
iscsi_iser.c IB/iser: Simplify connection management 2014-05-26 08:19:48 -07:00
iscsi_iser.h IB/iser: Simplify connection management 2014-05-26 08:19:48 -07:00
iser_initiator.c IB/iser: Update Mellanox copyright note 2014-04-01 11:09:46 -07:00
iser_memory.c IB/iser: Update Mellanox copyright note 2014-04-01 11:09:46 -07:00
iser_verbs.c IB/iser: Simplify connection management 2014-05-26 08:19:48 -07:00
Kconfig Update broken web addresses in the kernel. 2010-10-18 11:03:14 +02:00
Makefile IB/iser: iSER Kconfig and Makefile 2006-06-22 07:51:14 -07:00