linux/drivers/target/iscsi
Nicholas Bellinger fd3a9025c0 iscsi-target: Fix immediate queue starvation regression with DATAIN
This patch addresses a v3.5+ regression in iscsi-target where TX thread
process context -> handle_response_queue() execution is allowed to run
unbounded while servicing constant outgoing flow of ISTATE_SEND_DATAIN
response state.

This ends up preventing memory release of StatSN acknowledged commands
in a timely manner when under heavy large block streaming DATAIN
workloads.

The regression bug was initially introduced with:

commit 6f3c0e69a9
Author: Andy Grover <agrover@redhat.com>
Date:   Tue Apr 3 15:51:09 2012 -0700

    target/iscsi: Refactor target_tx_thread immediate+response queue loops

Go ahead and follow original iscsi_target_tx_thread() logic and check
to break for immediate queue processing after each DataIN Sequence and/or
Response PDU has been sent.

Reported-by: Benjamin ESTRABAUD <be@mpstor.com>
Cc: Andy Grover <agrover@redhat.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
2013-02-27 19:03:22 -08:00
..
Kconfig
Makefile
iscsi_target.c iscsi-target: Fix immediate queue starvation regression with DATAIN 2013-02-27 19:03:22 -08:00
iscsi_target.h iscsi-target: Refactor iscsit_get_np sockaddr matching into iscsit_check_np_match 2013-02-19 17:58:04 -08:00
iscsi_target_auth.c
iscsi_target_auth.h
iscsi_target_configfs.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending 2012-12-15 14:25:10 -08:00
iscsi_target_configfs.h
iscsi_target_core.h target: pass sense_reason as a return value 2012-11-06 20:55:46 -08: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_device.c
iscsi_target_device.h
iscsi_target_erl0.c target: iscsi: fix comment typos in target/iscsi drivers 2012-11-19 14:17:31 +01:00
iscsi_target_erl0.h
iscsi_target_erl1.c target: pass sense_reason as a return value 2012-11-06 20:55:46 -08: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 CmdSN comparison (use cmd->cmd_sn instead of cmd->stat_sn) 2013-01-10 21:00:37 -08:00
iscsi_target_erl2.h iscsit: proper endianess conversions 2012-10-03 14:39:22 -07:00
iscsi_target_login.c iscsi_target: Remove redundant null check before kfree 2012-11-27 22:49:20 -08:00
iscsi_target_login.h
iscsi_target_nego.c iscsi-target: Always send a response before terminating iSCSI connection 2012-11-07 20:12:08 -08:00
iscsi_target_nego.h
iscsi_target_nodeattrib.c iscsi-target: remove improper externs 2012-03-17 18:07:04 -07:00
iscsi_target_nodeattrib.h
iscsi_target_parameters.c iscsi-target: make some temporary buffers larger 2013-02-13 11:27:51 -08:00
iscsi_target_parameters.h iscsi-target: Enable MaxXmitDataSegmentLength operation in login path 2012-10-02 13:17:31 -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 target: don't truncate the fail intr address 2013-02-13 11:27:58 -08:00
iscsi_target_stat.h
iscsi_target_tmr.c iscsi-target: Fix bug in handling of ExpStatSN ACK during u32 wrap-around 2012-11-07 20:12:07 -08:00
iscsi_target_tmr.h
iscsi_target_tpg.c iscsi-target: Enforce individual network portal export once per TargetName 2013-02-19 17:58:12 -08:00
iscsi_target_tpg.h
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_util.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending 2012-12-15 14:25:10 -08:00
iscsi_target_util.h iscsi-target: Fix missed wakeup race in TX thread 2012-11-01 00:38:44 -07:00