linux-stable/include/target
Nicholas Bellinger 07bde79a5c target: Add SCF_EMULATE_QUEUE_FULL -> transport_handle_queue_full
This patch adds SCF_EMULATE_QUEUE_FULL support using -EAGAIN failures
via transport_handle_queue_full() to signal queue full in completion
path TFO->queue_data_in() and TFO->queue_status() callbacks.

This is done using a new se_cmd->transport_qf_callback() to handle
the following queue full exception cases within target core:

*) TRANSPORT_COMPLETE_OK (for completion path queue full)

*) TRANSPORT_COMPLETE_QF_WP (for TRANSPORT_WRITE_PENDING queue full)

*) transport_send_check_condition_and_sense() failure paths in
   transport_generic_request_failure() and transport_generic_complete_ok()

All logic is driven using se_device->qf_work_queue -> target_qf_do_work()
to to requeue outstanding se_cmd at the head of se_dev->queue_obj->qobj_list
for transport_processing_thread() execution.

Tested using tcm_qla2xxx with MAX_OUTSTANDING_COMMANDS=128 for FCP READ
to trigger the TRANSPORT_COMPLETE_OK queue full cases, and a simulated
TFO->write_pending() -EAGAIN failure to trigger TRANSPORT_COMPLETE_QF_WP.

Reported-by: Roland Dreier <roland@purestorage.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
2011-07-22 09:37:45 +00:00
..
configfs_macros.h
target_core_base.h target: Add SCF_EMULATE_QUEUE_FULL -> transport_handle_queue_full 2011-07-22 09:37:45 +00:00
target_core_configfs.h [SCSI] target: add initial statistics 2011-03-23 11:36:50 -05:00
target_core_device.h target: More core cleanups from AGrover (round 2) 2011-07-22 09:37:43 +00:00
target_core_fabric_configfs.h
target_core_fabric_lib.h
target_core_fabric_ops.h target: merge release_cmd methods 2011-07-22 09:37:44 +00:00
target_core_tmr.h [SCSI] target: Convert TMR REQ/RSP definitions to target namespace 2011-03-23 11:36:35 -05:00
target_core_tpg.h
target_core_transport.h target: Add transport_handle_cdb_direct optimization 2011-07-22 09:37:44 +00:00