linux/include/scsi
Damien Le Moal de202d2251 scsi: libsas: terminate deferred commands on time out
If a command times out while we have deferred non-NCQ commands waiting to
be issued, the SCSI EH task is not immediately woken up as the waiting
deferred commands are never issued nor completed, thus leaving the SCSI
host in a busy state (shost->host_failed != scsi_host_busy(shost)) which
prevents the SCSI EH task from being woken up. Eventually, when the
deferred commands also time out, the SCSI EH task is woken up and the
timeout processing occurs.

Avoid this unnecessary additional SCSI EH wake up time with the same
method as implemented in libata-scsi, using the eh_timed_out SCSI host
template operation. The function sas_eh_timed_out() implements this
operation and executes the function ata_scsi_retry_deferred_qc()
for SATA devices.

Co-developed-by: Igor Pylypiv <ipylypiv@google.com>
Signed-off-by: Igor Pylypiv <ipylypiv@google.com>
Fixes: 0ea84089db ("ata: libata-scsi: avoid Non-NCQ command starvation")
Cc: stable@vger.kernel.org
Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Hannes Reinecke <hare@kernel.org>
Tested-by: Igor Pylypiv <ipylypiv@google.com>
Reviewed-by: Niklas Cassel <cassel@kernel.org>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
2026-07-29 10:52:04 +09:00
..
fc scsi: libfc: Replace one-element arrays with flexible-array members 2022-02-27 21:17:37 -05:00
fc_frame.h scsi: libfc: Move scsi/fc_encode.h to libfc 2020-10-29 21:49:25 -04:00
fcoe_sysfs.h scsi: fcoe: Simplify alloc_ordered_workqueue() invocations 2024-08-22 21:28:56 -04:00
iscsi_if.h scsi: iscsi: Add support for asynchronous iSCSI session destruction 2020-03-11 23:07:57 -04:00
iscsi_proto.h scsi: Fix spelling mistakes in header files 2021-05-21 17:22:45 -04:00
iser.h scsi: iser: Fix @read_stag kernel-doc warning 2024-04-08 22:10:06 -04:00
libfc.h scsi: Change the return type of the .queuecommand() callback 2026-01-23 21:32:34 -05:00
libfcoe.h scsi: libfcoe: Include <linux/prandom.h> instead of <linux/random.h> 2024-10-03 18:20:03 +02:00
libiscsi_tcp.h scsi: iscsi_tcp: Switch to using the crc32c library 2025-02-12 22:05:10 -05:00
libiscsi.h scsi: Change the return type of the .queuecommand() callback 2026-01-23 21:32:34 -05:00
libsas.h scsi: libsas: terminate deferred commands on time out 2026-07-29 10:52:04 +09:00
sas_ata.h scsi: libsas: Move declarations of internal functions to sas_internal.h 2025-07-25 09:03:57 -04:00
sas.h scsi: libsas: Introduce struct smp_rps_resp 2022-06-10 13:08:06 -04:00
scsi_bsg_iscsi.h scsi: bsg: Replace zero-length array with flexible array member 2024-12-04 13:04:42 -05:00
scsi_cmnd.h scsi: core: Fix the return value of scsi_logical_block_count() 2024-08-16 21:02:06 -04:00
scsi_common.h scsi: core: target: Add INQUIRY-related constants to scsi_common.h 2026-05-22 21:49:04 -04:00
scsi_dbg.h scsi: core: Do not declare scsi_cmnd pointers const 2025-10-21 21:11:35 -04:00
scsi_device.h scsi: core: Convert INQUIRY information 2026-05-22 21:49:05 -04:00
scsi_devinfo.h scsi: core: Introduce the BLIST_SKIP_IO_HINTS flag 2024-06-13 21:03:13 -04:00
scsi_dh.h scsi: core: Introduce enum scsi_disposition 2021-04-15 22:44:40 -04:00
scsi_driver.h scsi: core: sysfs: Make use of bus callbacks 2026-01-11 21:31:58 -05:00
scsi_eh.h scsi: core: Fix error handler encryption support 2026-01-04 15:16:20 -05:00
scsi_host.h scsi: core: Drop using the host_lock to protect async_scan race condition 2026-03-07 10:58:33 -05:00
scsi_ioctl.h scsi: replace the fmode_t argument to scsi_ioctl with a simple bool 2023-06-12 08:04:04 -06:00
scsi_proto.h scsi: sd: Remove the stream_status member from scsi_stream_status_header 2025-05-12 22:16:10 -04:00
scsi_status.h scsi: core: Remove useless host error codes 2022-09-06 22:05:59 -04:00
scsi_tcq.h scsi: core: Only return started requests from scsi_host_find_tag() 2020-07-24 22:09:56 -04:00
scsi_transport_fc.h scsi: scsi_transport_fc: Introduce encryption group in fc_rport attribute 2025-12-16 21:56:48 -05:00
scsi_transport_iscsi.h Driver core and debugfs updates 2025-01-28 12:25:12 -08:00
scsi_transport_sas.h scsi: mpi3mr: Fix ATA NCQ priority support 2024-06-11 21:40:23 -04:00
scsi_transport_spi.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
scsi_transport_srp.h scsi: scsi_transport_srp: Fix a couple of kernel-doc warnings 2024-04-08 22:10:06 -04:00
scsi_transport.h scsi: core: Initialize scsi midlayer limits before allocating the queue 2024-04-11 21:37:48 -04:00
scsi.h scsi: core: Introduce an enumeration type for the SCSI_MLQUEUE constants 2025-12-16 22:20:26 -05:00
scsicam.h scsi: switch ->bios_param() to passing gendisk 2025-08-13 02:59:28 -04:00
sg.h scsi: core: Rename status_byte to sg_status_byte 2022-12-01 03:22:23 +00:00
srp.h RDMA/srp: Apply the __packed attribute to members instead of structures 2021-05-28 20:21:20 -03:00
viosrp.h scsi: ibmvscsis: Silence -Warray-bounds warning 2022-02-11 16:42:22 -05:00