1
linux/drivers/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
..
loopback target: merge release_cmd methods 2011-07-22 09:37:44 +00:00
tcm_fc target: merge release_cmd methods 2011-07-22 09:37:44 +00:00
Kconfig [SCSI] tcm_fc: Adding FC_FC4 provider (tcm_fc) for FCoE target (TCM - target core) support 2011-05-17 10:52:46 +04:00
Makefile [SCSI] tcm_fc: Adding FC_FC4 provider (tcm_fc) for FCoE target (TCM - target core) support 2011-05-17 10:52:46 +04:00
target_core_alua.c target: Updates from AGrover and HCH (round 3) 2011-07-22 09:37:44 +00:00
target_core_alua.h
target_core_cdb.c target: Updates from AGrover and HCH (round 3) 2011-07-22 09:37:44 +00:00
target_core_configfs.c target: merge release_cmd methods 2011-07-22 09:37:44 +00:00
target_core_device.c target: Updates from AGrover and HCH (round 3) 2011-07-22 09:37:44 +00:00
target_core_fabric_configfs.c target: Core cleanups from AGrover (round 1) 2011-07-22 09:37:43 +00:00
target_core_fabric_lib.c Fix common misspellings 2011-03-31 11:26:23 -03:00
target_core_file.c target: Updates from AGrover and HCH (round 3) 2011-07-22 09:37:44 +00:00
target_core_file.h target: Core cleanups from AGrover (round 1) 2011-07-22 09:37:43 +00:00
target_core_hba.c target: Core cleanups from AGrover (round 1) 2011-07-22 09:37:43 +00:00
target_core_hba.h
target_core_iblock.c target: Updates from AGrover and HCH (round 3) 2011-07-22 09:37:44 +00:00
target_core_iblock.h target: Core cleanups from AGrover (round 1) 2011-07-22 09:37:43 +00:00
target_core_pr.c target: Updates from AGrover and HCH (round 3) 2011-07-22 09:37:44 +00:00
target_core_pr.h target: Core cleanups from AGrover (round 1) 2011-07-22 09:37:43 +00:00
target_core_pscsi.c target: Updates from AGrover and HCH (round 3) 2011-07-22 09:37:44 +00:00
target_core_pscsi.h target: Core cleanups from AGrover (round 1) 2011-07-22 09:37:43 +00:00
target_core_rd.c target: Updates from AGrover and HCH (round 3) 2011-07-22 09:37:44 +00:00
target_core_rd.h target: Core cleanups from AGrover (round 1) 2011-07-22 09:37:43 +00:00
target_core_scdb.c
target_core_scdb.h
target_core_stat.c target: Core cleanups from AGrover (round 1) 2011-07-22 09:37:43 +00:00
target_core_stat.h [SCSI] target: add initial statistics 2011-03-23 11:36:50 -05:00
target_core_tmr.c target: remove the always-noop ->new_cmd_failure method 2011-07-22 09:37:44 +00:00
target_core_tpg.c target: Core cleanups from AGrover (round 1) 2011-07-22 09:37:43 +00:00
target_core_transport.c target: Add SCF_EMULATE_QUEUE_FULL -> transport_handle_queue_full 2011-07-22 09:37:45 +00:00
target_core_ua.c target: Updates from AGrover and HCH (round 3) 2011-07-22 09:37:44 +00:00
target_core_ua.h