WSL2-Linux-Kernel/drivers/target/iscsi
Nicholas Bellinger d381a8010a iscsi-target: Add login negotiation multi-plexing support
This patch adds support for login negotiation multi-plexing in
iscsi-target code.

This involves handling the first login request PDU + payload and
login response PDU + payload within __iscsi_target_login_thread()
process context, and then changing struct sock->sk_data_ready()
so that all subsequent exchanges are handled by workqueue process
context, to allow other incoming login requests to be received
in parallel by __iscsi_target_login_thread().

Upon login negotiation completion (or failure), ->sk_data_ready()
is replaced with the original kernel sockets handler saved in
iscsi_conn->orig_data_ready.

v3 changes:
  - Convert iscsi_target_sk_data_ready() lock access to
    write[lock,unlock]_bh()
  - Only clear LOGIN_FLAGS_READ_ACTIVE when iscsi_target_do_login()
    returns zero
  - Add LOGIN_FLAGS_READY + LOGIN_FLAGS_CLOSED bit checks to
    iscsi_target_sk_data_ready()
  - Make INIT_DELAYED_WORK() + iscsi_target_set_sock_callbacks() setup
    happen earlier by moving from iscsi_target_start_negotiation() into
    iscsi_target_locate_portal()
  - Set LOGIN_FLAGS_READY bit in iscsi_target_start_negotiation()
    after iscsi_target_do_login() returns zero.

v2 changes:
  - Add login_timer in iscsi_target_do_login_rx() to avoid
    possible endless sleep with MSG_WAITALL for traditional
    iscsi-target in certain network configurations.
  - Convert lprintk() -> pr_debug()
  - Remove forward declarations of iscsi_target_set_sock_callbacks(),
    iscsi_target_restore_sock_callbacks() and iscsi_target_sk_data_ready()
  - Make iscsi_target_set_sock_callbacks + iscsi_target_restore_sock_callbacks()
    static (Fengguang)
  - Make iscsi_target_do_login_rx() safe for iser-target w/o conn->sock

Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
2013-09-09 14:13:31 -07:00
..
Kconfig target: iscsi_target depends on NET 2011-07-28 20:16:18 +00:00
Makefile iscsi-target: Add iscsit_transport API template 2013-04-25 01:05:26 -07:00
iscsi_target.c iscsi-target: Prepare login code for multi-plexing support 2013-09-09 13:34:09 -07:00
iscsi_target.h iscsi-target: Prepare login code for multi-plexing support 2013-09-09 13:34:09 -07:00
iscsi_target_auth.c target/iscsi: Remove chap_set_random() 2013-04-25 01:05:22 -07:00
iscsi_target_auth.h iscsi-target: Add iSCSI fabric support for target v4.1 2011-07-26 09:16:43 +00:00
iscsi_target_configfs.c target: replace strict_strto*() with kstrto*() 2013-08-12 20:31:44 -07:00
iscsi_target_configfs.h iscsi-target: Add iSCSI fabric support for target v4.1 2011-07-26 09:16:43 +00:00
iscsi_target_core.h iscsi-target: Add login negotiation multi-plexing support 2013-09-09 14:13:31 -07:00
iscsi_target_datain_values.c target/iscsi: Eliminate iscsi_cmd.data_length 2012-04-14 17:40:38 -07:00
iscsi_target_datain_values.h iscsi-target: Add iSCSI fabric support for target v4.1 2011-07-26 09:16:43 +00:00
iscsi_target_device.c iscsi-target: Refactor TX queue logic + export response PDU creation 2013-04-25 01:05:27 -07:00
iscsi_target_device.h target/iscsi: Remove unneeded wrapper functions 2012-02-25 14:37:47 -08:00
iscsi_target_erl0.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending 2013-07-11 12:57:19 -07:00
iscsi_target_erl0.h iscsi-target: Add iSCSI fabric support for target v4.1 2011-07-26 09:16:43 +00:00
iscsi_target_erl1.c iscsi-target: Fix iscsit_sequence_cmd reject handling for iser 2013-07-06 21:59:54 -07:00
iscsi_target_erl1.h iscsit: use the itt_t abstract type 2012-10-03 14:21:50 -07:00
iscsi_target_erl2.c iscsi-target: Fix iscsit_free_cmd() se_cmd->cmd_kref shutdown handling 2013-05-31 01:21:28 -07:00
iscsi_target_erl2.h iscsit: proper endianess conversions 2012-10-03 14:39:22 -07:00
iscsi_target_login.c iscsi-target: Prepare login code for multi-plexing support 2013-09-09 13:34:09 -07:00
iscsi_target_login.h iscsi-target: Prepare login code for multi-plexing support 2013-09-09 13:34:09 -07:00
iscsi_target_nego.c iscsi-target: Add login negotiation multi-plexing support 2013-09-09 14:13:31 -07:00
iscsi_target_nego.h iscsi-target: Initial traditional TCP conversion to iscsit_transport 2013-04-25 01:05:26 -07:00
iscsi_target_nodeattrib.c iscsi-target: remove improper externs 2012-03-17 18:07:04 -07:00
iscsi_target_nodeattrib.h iscsi-target: Add iSCSI fabric support for target v4.1 2011-07-26 09:16:43 +00:00
iscsi_target_parameters.c target: replace strict_strto*() with kstrto*() 2013-08-12 20:31:44 -07:00
iscsi_target_parameters.h iscsi-target: fix heap buffer overflow on error 2013-05-30 18:07:54 -07:00
iscsi_target_seq_pdu_list.c iscsi-target: Change iscsi_target_seq_pdu_list.c to honor MaxXmitDataSegmentLength 2012-10-02 13:17:33 -07:00
iscsi_target_seq_pdu_list.h target/iscsi: Fold _decide_list_to_build into _build_pdu_and_seq_lists 2012-04-14 17:40:38 -07:00
iscsi_target_stat.c iscsi-target: ST response on IN6ADDR_ANY socket 2013-08-12 20:31:53 -07:00
iscsi_target_stat.h iscsi-target: Add iSCSI fabric support for target v4.1 2011-07-26 09:16:43 +00:00
iscsi_target_tmr.c iscsi-target: Refactor TX queue logic + export response PDU creation 2013-04-25 01:05:27 -07:00
iscsi_target_tmr.h iscsi-target: Add iSCSI fabric support for target v4.1 2011-07-26 09:16:43 +00:00
iscsi_target_tpg.c iscsi-target: Add login negotiation multi-plexing support 2013-09-09 14:13:31 -07:00
iscsi_target_tpg.h iscsi-target: Add login negotiation multi-plexing support 2013-09-09 14:13:31 -07:00
iscsi_target_tq.c iscsi-target: Use list_first_entry() where appropriate 2012-11-06 20:55:45 -08:00
iscsi_target_tq.h iscsit: mark various functions static 2012-10-02 14:41:59 -07:00
iscsi_target_transport.c iscsi-target: Add iscsit_transport API template 2013-04-25 01:05:26 -07:00
iscsi_target_util.c iscsi-target: Fix iscsit_sequence_cmd reject handling for iser 2013-07-06 21:59:54 -07:00
iscsi_target_util.h iscsi-target: Fix iscsit_sequence_cmd reject handling for iser 2013-07-06 21:59:54 -07:00