linux/include/scsi
Bart Van Assche 8893cf6cb1 scsi: mpt3sas: Avoid sleeping in interrupt context
Commit 669f044170 ("scsi: srp_transport: Move queuecommand() wait code
to SCSI core") can make scsi_internal_device_block() sleep.  However,
the mpt3sas driver can call this function from an interrupt
handler. Hence add a second argument to scsi_internal_device_block()
that restores the old behavior of this function for the mpt3sas handler.

The call chain that triggered an "IRQ handler enabled interrupts"
complaint is as follows:

_base_interrupt()
-> _base_async_event()
   -> mpt3sas_scsih_event_callback()
      -> _scsih_check_topo_delete_events()
         -> _scsih_block_io_to_children_attached_directly()
            -> _scsih_block_io_device()
               -> _scsih_internal_device_block()
                  -> scsi_internal_device_block()

Reported-by: Omar Sandoval <osandov@osandov.com>
Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Cc: Omar Sandoval <osandov@osandov.com>
Cc: Hannes Reinecke <hare@suse.com>
Cc: Sagi Grimberg <sagi@grimberg.me>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Sathya Prakash <sathya.prakash@broadcom.com>
Cc: Chaitra P B <chaitra.basappa@broadcom.com>
Cc: Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com>
Cc: Sreekanth Reddy <Sreekanth.Reddy@broadcom.com>
Cc: <stable@vger.kernel.org> # v4.10+
Tested-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2017-03-01 21:52:13 -05:00
..
fc fc_fip: Update to latest FC-BB-6 draft 2016-07-13 22:04:27 -04:00
fc_encode.h
fc_frame.h
fcoe_sysfs.h
iscsi_if.h scsi_transport_iscsi: Add 25G and 40G speed definition 2016-02-23 21:27:02 -05:00
iscsi_proto.h linux: drop __bitwise__ everywhere 2016-12-16 00:13:41 +02:00
iser.h IB/iser,isert: Create and use new shared header 2015-12-24 00:17:35 -05:00
libfc.h scsi: libfc: Fix variable name in fc_set_wwpn 2017-01-16 15:43:02 -05:00
libfcoe.h fcoe: implement FIP VLAN responder 2016-07-20 19:49:41 -04:00
libiscsi_tcp.h iscsi_tcp: Use ahash 2016-01-27 20:36:10 +08:00
libiscsi.h scsi: libiscsi: add lock around task lists to fix list corruption regression 2017-02-28 22:05:22 -05:00
libsas.h
osd_attributes.h
osd_initiator.h
osd_ore.h
osd_protocol.h
osd_sec.h
osd_sense.h
osd_types.h
sas_ata.h
sas.h scsi: Centralise ssp frame information units 2015-11-25 22:12:50 -05:00
scsi_bsg_iscsi.h
scsi_cmnd.h block: introduce blk_rq_is_passthrough 2017-01-31 14:00:34 -07:00
scsi_common.h scsi: add scsi_set_sense_field_pointer() 2016-04-04 12:07:42 -04:00
scsi_dbg.h scsi: remove scsi_show_sense_hdr() 2015-12-02 16:36:14 -05:00
scsi_device.h scsi: mpt3sas: Avoid sleeping in interrupt context 2017-03-01 21:52:13 -05:00
scsi_devinfo.h scsi_dh_alua: Add new blacklist flag 'BLIST_SYNC_ALUA' 2016-02-23 21:27:02 -05:00
scsi_dh.h scsi_dh: add 'rescan' callback 2016-02-23 21:27:02 -05:00
scsi_driver.h
scsi_eh.h libata: evaluate SCSI sense code 2016-04-04 12:07:41 -04:00
scsi_host.h scsi: allocate scsi_cmnd structures as part of struct request 2017-01-27 15:08:35 -07:00
scsi_ioctl.h
scsi_proto.h sd: Implement support for ZBC devices 2016-10-18 19:49:11 -06:00
scsi_request.h block: split scsi_request out of struct request 2017-01-27 15:08:35 -07:00
scsi_tcq.h scsi: use host wide tags by default 2015-11-09 17:11:57 -08:00
scsi_transport_fc.h scsi: remove eh_timed_out methods in the transport template 2017-02-06 19:10:03 -05:00
scsi_transport_iscsi.h iSCSI: let session recovery_tmo sysfs writes persist across recovery 2015-07-30 12:43:00 -07:00
scsi_transport_sas.h scsi: sas: remove is_sas_attached() 2016-08-18 22:23:20 -04:00
scsi_transport_spi.h
scsi_transport_srp.h scsi: remove tsk_mgmt_response and it_nexus_response transport methods 2017-02-06 19:10:41 -05:00
scsi_transport.h SCSI misc on 20170220 2017-02-21 11:51:42 -08:00
scsi.h scsi: remove useless acpi functions in the header file 2017-01-10 23:13:58 -05:00
scsicam.h
sg.h
srp.h IB/srp: Add 64-bit LUN support 2015-05-18 13:35:56 -04:00
viosrp.h ibmvscsis: Initial commit of IBM VSCSI Tgt Driver 2016-07-20 01:15:43 -07:00