iscsi-target: Fix immediate queue starvation regression with DATAIN
authorNicholas Bellinger <nab@linux-iscsi.org>
Thu, 28 Feb 2013 01:53:52 +0000 (17:53 -0800)
committerNicholas Bellinger <nab@linux-iscsi.org>
Thu, 28 Feb 2013 03:03:22 +0000 (19:03 -0800)
commitfd3a9025c0349bc9b01d627529f54e6e1e389015
tree2b76a08283890e902756307e6e2c004c10a24099
parent972b29c8f86093f44e1d781588bd5c5faae3d8e3
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 6f3c0e69a9c20441bdc6d3b2d18b83b244384ec6
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>
drivers/target/iscsi/iscsi_target.c