iser-target: Fix flush + disconnect completion handling
authorSagi Grimberg <sagig@mellanox.com>
Tue, 2 Dec 2014 14:57:20 +0000 (16:57 +0200)
committerJiri Slaby <jslaby@suse.cz>
Thu, 29 Jan 2015 14:44:49 +0000 (15:44 +0100)
commit3ebffafc28ea4ff4599429f02bdf1f1dfbb50c67
tree96a61c6a862b3c453cd427a507aee123d375c709
parent9362d6bc8aada3c172054ae12a53ecc9df17d680
iser-target: Fix flush + disconnect completion handling

commit 128e9cc84566a84146baea2335b3824288eed817 upstream.

ISER_CONN_UP state is not sufficient to know if
we should wait for completion of flush errors and
disconnected_handler event.

Instead, split it to 2 states:
- ISER_CONN_UP: Got to CM connected phase, This state
indicates that we need to wait for a CM disconnect
event before going to teardown.

- ISER_CONN_FULL_FEATURE: Got to full feature phase
after we posted login response, This state indicates
that we posted recv buffers and we need to wait for
flush completions before going to teardown.

Also avoid deffering disconnected handler to a work,
and handle it within disconnected handler.
More work here is needed to handle DEVICE_REMOVAL event
correctly (cleanup all resources).

Squashed:

iser-target: Don't deffer disconnected handler to a work

Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
drivers/infiniband/ulp/isert/ib_isert.c
drivers/infiniband/ulp/isert/ib_isert.h