linux/include/scsi
David Jeffery dccf3b1798 scsi: core: wake eh reliably when using scsi_schedule_eh
Drivers which use the scsi_schedule_eh function to run the error handler
currently risk the error handler thread never waking once all commands are
timed out or inactive. There is no enforced memory order between setting
the host into error recovery state and counting busy commands. This can
result in a race with scsi_dec_host_busy where neither CPU sees both
conditions of all commands inactive and the host error state to request
waking the error handler.

To fix this, run the scsi_schedule_eh's scsi_eh_wakeup from a new work item
which will use rcu to ensure scsi_schedule_eh's call to scsi_host_busy will
occur after the error state is globally visible and will be seen by any
current scsi_dec_host_busy callers.

Fixes: 6eb045e092 ("scsi: core: avoid host-wide host_busy counter for scsi_mq")
Signed-off-by: David Jeffery <djeffery@redhat.com>
Link: https://patch.msgid.link/20260615174630.11492-1-djeffery@redhat.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2026-07-12 22:21:22 -04:00
..
fc
fc_frame.h
fcoe_sysfs.h scsi: fcoe: Simplify alloc_ordered_workqueue() invocations 2024-08-22 21:28:56 -04:00
iscsi_if.h
iscsi_proto.h
iser.h
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: Delete unused to_dom_device() and to_dev_attr() 2026-04-08 21:55:51 -04: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_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_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: Remove export for scsi_device_from_queue() 2026-06-15 21:48:31 -04:00
scsi_devinfo.h
scsi_dh.h
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: wake eh reliably when using scsi_schedule_eh 2026-07-12 22:21:22 -04:00
scsi_ioctl.h
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_tcq.h
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_transport_spi.h
scsi_transport_srp.h
scsi_transport.h
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
srp.h
viosrp.h