linux/include/target
Nicholas Bellinger a17f091d1a target: Add generic active I/O shutdown logic
This patch adds the initial pieces of generic active I/O shutdown logic.
This is intended to be a 'opt-in' feature for fabric modules that
includes the following functions to provide a mechinism for fabric
modules to track se_cmd via se_session->sess_cmd_list:

*) target_get_sess_cmd() - Add se_cmd to sess->sess_cmd_list, called
   from fabric module incoming I/O path.
*) target_put_sess_cmd() - Check for completion or drop se_cmd from
   ->sess_cmd_list
*) target_splice_sess_cmd_list() - Splice active I/O list from
   ->sess_cmd_list to ->sess_wait_list, can called with HW fabric
   lock held.
*) target_wait_for_sess_cmds() - Walk ->sess_wait_list waiting on
   individual ->cmd_wait_comp.  Optional transport_wait_for_tasks()
   call.

target_splice_sess_cmd_list() is allowed to be called under HW fabric
lock, and performs the splice into se_sess->sess_wait_list and set
se_cmd->cmd_wait_set.  Then target_wait_for_sess_cmds() walks the list
waiting for individual target_put_sess_cmd() fabric callbacks to
complete.

It also adds TFO->check_release_cmd() to split the completion and memory
release calls, where a fabric module uses target_put_sess_cmd() to check
for I/O completion during session shutdown.  This is currently pushed out
into fabric modules as current fabric code may sleep here waiting for
TFO->check_stop_free() to complete in main response path, and because
target_wait_for_sess_cmds() calling TFO->release_cmd() to free fabric
descriptor memory directly.

Cc: Christoph Hellwig <hch@lst.de>
Cc: Roland Dreier <roland@purestorage.com>
Signed-off-by: Nicholas A. Bellinger <nab@linux-iscsi.org>
2011-11-04 07:50:26 +00:00
..
configfs_macros.h
target_core_base.h target: Add generic active I/O shutdown logic 2011-11-04 07:50:26 +00:00
target_core_configfs.h [SCSI] target: add initial statistics 2011-03-23 11:36:50 -05:00
target_core_device.h target: Update QUEUE ALGORITHM MODIFIER control page default 2011-07-22 09:37:49 +00:00
target_core_fabric_configfs.h
target_core_fabric_lib.h
target_core_fabric_ops.h target: Add generic active I/O shutdown logic 2011-11-04 07:50:26 +00:00
target_core_tmr.h target: Have core_tmr_alloc_req() take an explicit GFP_xxx flag 2011-10-24 03:20:53 +00:00
target_core_tpg.h
target_core_transport.h target: Add generic active I/O shutdown logic 2011-11-04 07:50:26 +00:00