]> git.karo-electronics.de Git - mv-sheeva.git/commit
[SCSI] target: Fix t_transport_aborted handling in LUN_RESET + active I/O shutdown
authorNicholas Bellinger <nab@linux-iscsi.org>
Fri, 25 Feb 2011 00:58:20 +0000 (16:58 -0800)
committerJames Bottomley <James.Bottomley@suse.de>
Mon, 28 Feb 2011 17:23:32 +0000 (11:23 -0600)
commit52208ae3fc60cbcb214c10fb8b82304199e2cc3a
treed7c7e938453b257ce49197cb91f64fed1860b254
parent493f3358cb289ccf716c5a14fa5bb52ab75943e5
[SCSI] target: Fix t_transport_aborted handling in LUN_RESET + active I/O shutdown

This patch addresses two outstanding bugs related to
T_TASK(cmd)->t_transport_aborted handling during TMR LUN_RESET and
active I/O shutdown.

This first involves adding two explict t_transport_aborted=1
assignments in core_tmr_lun_reset() in order to signal the task has
been aborted, and updating transport_generic_wait_for_tasks() to skip
sleeping when t_transport_aborted=1 has been set.  This fixes an issue
where transport_generic_wait_for_tasks() would end up sleeping
indefinately when called from fabric module context while TMR
LUN_RESET was happening with long outstanding backend struct se_task
not yet being completed.

The second adds a missing call to
transport_remove_task_from_execute_queue() when
task->task_execute_queue=1 is set in order to fix an OOPs when
task->t_execute_list has not been dropped.  It also fixes the same
case in transport_processing_shutdown() to prevent the issue from
happening during active I/O struct se_device shutdown.

Signed-off-by: Nicholas A. Bellinger <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/target/target_core_tmr.c
drivers/target/target_core_transport.c
include/target/target_core_transport.h