linux/drivers/scsi
Finn Thain fd47d919d0 scsi: esp_scsi: Track residual for PIO transfers
If a target disconnects during a PIO data transfer the command may fail
when the target reconnects:

scsi host1: DMA length is zero!
scsi host1: cur adr[04380000] len[00000000]

The scsi bus is then reset. This happens because the residual reached
zero before the transfer was completed.

The usual residual calculation relies on the Transfer Count registers.
That works for DMA transfers but not for PIO transfers. Fix the problem
by storing the PIO transfer residual and using that to correctly
calculate bytes_sent.

Fixes: 6fe07aaffb ("[SCSI] m68k: new mac_esp scsi driver")
Tested-by: Stan Johnson <userm57@yahoo.com>
Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Tested-by: Michael Schmitz <schmitzmic@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2018-10-17 21:34:20 -04:00
..
aacraid scsi: aacraid: remove unused variables dev and cpu 2018-08-30 07:25:03 -04:00
aic7xxx scsi: aic7xxx: remove set but not used variable 'shared_scb_data' 2018-09-17 02:34:16 -04:00
aic94xx scsi: aic94xx: mark expected switch fall-throughs 2018-10-16 21:54:41 -04:00
arcmsr scsi: arcmsr: Remove set but not used variables 'id, lun' 2018-10-16 18:13:59 -04:00
arm treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
be2iscsi scsi: be2iscsi: fix spelling mistake "Retreiving" -> "Retrieving" 2018-10-16 17:52:41 -04:00
bfa scsi: bfa: Avoid implicit enum conversion in bfad_im_post_vendor_event 2018-10-16 21:45:12 -04:00
bnx2fc scsi: bnx2fc: Remove set but not used variable 'oxid' 2018-09-17 02:52:24 -04:00
bnx2i scsi: bnx2i: add error handling for ioremap_nocache 2018-06-19 22:02:25 -04:00
csiostor scsi: csiostor: update csio_get_flash_params() 2018-08-02 16:22:10 -04:00
cxgbi scsi: cxgb4i: add DCB support for iSCSI connections 2018-10-16 21:22:00 -04:00
cxlflash SCSI misc on 20180815 2018-08-15 22:06:26 -07:00
device_handler Merge branch 'fixes' into misc 2018-04-03 17:38:39 -07:00
dpt sched/wait: Rename wait_queue_t => wait_queue_entry_t 2017-06-20 12:18:27 +02:00
esas2r treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
fcoe SCSI misc on 20180815 2018-08-15 22:06:26 -07:00
fnic treewide: Use array_size() in vmalloc() 2018-06-12 16:19:22 -07:00
hisi_sas scsi: hisi_sas: Fix spin lock management in slot_index_alloc_quirk_v2_hw() 2018-10-16 17:50:49 -04:00
ibmvscsi scsi: ibmvscsi: change strncpy+truncation to strlcpy 2018-07-30 23:17:53 -04:00
ibmvscsi_tgt scsi: ibmvscsi_tgt: Remove target_wait_for_sess_cmd() 2018-10-17 20:51:52 -04:00
isci scsi: isci: Change sci_controller_start_task's return type to sci_status 2018-10-16 21:38:47 -04:00
libfc scsi: libfc: retry PRLI if we cannot analyse the payload 2018-10-15 23:53:37 -04:00
libsas scsi: libsas: fix a race condition when smp task timeout 2018-09-25 21:20:23 -04:00
lpfc scsi: lpfc: Remove set but not used variables 'tgtp' 2018-10-16 21:58:05 -04:00
megaraid scsi: megaraid_mbox: remove set but not used variables 2018-10-16 18:33:23 -04:00
mpt3sas scsi: mpt3sas: Remove unnecessary parentheses and simplify null checks 2018-10-10 22:07:49 -04:00
mvsas scsi: mvsas: fix wrong endianness of sgpio api 2018-03-01 21:07:48 -05:00
osd scsi: osd: initiator should use mq variant of request ending 2018-10-16 17:48:35 -04:00
pcmcia scsi: remove the fdomain and fdomain_cs drivers 2018-03-19 22:54:47 -04:00
pm8001 scsi: pm80xx: Remove set but not used variable 'page_code' 2018-09-17 02:26:15 -04:00
qedf scsi: qedf: Send the driver state to MFW 2018-07-10 22:25:23 -04:00
qedi SCSI misc on 20180815 2018-08-15 22:06:26 -07:00
qla2xxx scsi: qla2xxx: Simplify conditional check 2018-10-16 18:25:23 -04:00
qla4xxx scsi: qla4xxx: Remove redundant check on drvr_wait 2018-09-28 02:13:33 -04:00
smartpqi scsi: smartpqi: bump driver version to 1.1.4-130 2018-06-19 22:02:25 -04:00
snic scsi: snic: Replace spin_is_locked() with lockdep 2018-10-10 22:36:29 -04:00
sym53c8xx_2 scsi: sym53c8xx: fix NULL pointer dereference panic in sym_int_sir() 2018-09-11 20:54:02 -04:00
ufs scsi: ufs: Schedule clk gating work on correct queue 2018-10-17 20:48:39 -04:00
.gitignore scsi: scsi_devinfo: Add scsi_devinfo_tbl.c 2017-10-25 05:40:22 -04:00
3w-9xxx.c scsi: 3ware: fix return 0 on the error path of probe 2018-07-30 23:17:53 -04:00
3w-9xxx.h scsi: 3w-9xxx: rework lock timeouts 2017-12-04 20:32:53 -05:00
3w-sas.c scsi: 3ware: fix return 0 on the error path of probe 2018-07-30 23:17:53 -04:00
3w-sas.h
3w-xxxx.c scsi: 3ware: fix return 0 on the error path of probe 2018-07-30 23:17:53 -04:00
3w-xxxx.h
53c700_d.h_shipped
53c700.c scsi: 53c700: move bus reset to host reset 2017-08-25 17:21:11 -04:00
53c700.h scsi: 53c700: Fix spelling of 'NEGOTIATION' 2018-08-30 07:27:22 -04:00
53c700.scr
a100u2w.c scsi: a100u2w: Replace mdelay() with msleep() 2018-07-30 23:17:53 -04:00
a100u2w.h
a2091.c scsi: drop bus reset for wd33c93-compatible boards 2017-08-25 17:21:10 -04:00
a2091.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
a3000.c scsi: drop bus reset for wd33c93-compatible boards 2017-08-25 17:21:10 -04:00
a3000.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
a4000t.c
advansys.c scsi: advansys: remove unused variable 'srb_tag' in adv_isr_callback 2018-10-17 21:01:59 -04:00
aha152x.c scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
aha152x.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
aha1542.c treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
aha1542.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
aha1740.c scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
aha1740.h scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
am53c974.c scsi: esp_scsi: move dma mapping into the core code 2018-10-15 23:00:38 -04:00
atari_scsi.c scsi: NCR5380: Move bus reset to host reset 2017-08-25 17:21:11 -04:00
atp870u.c scsi: atp870u: Replace mdelay() with msleep() 2018-07-30 23:17:53 -04:00
atp870u.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
BusLogic.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
BusLogic.h
bvme6000_scsi.c
ch.c scsi: core: check for equality of result byte values 2018-06-26 12:27:06 -04:00
constants.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dc395x.c scsi: dc395x: use generic DMA API 2018-10-17 21:34:20 -04:00
dc395x.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dmx3191d.c scsi: NCR5380: Move bus reset to host reset 2017-08-25 17:21:11 -04:00
dpt_i2o.c scsi: dpt_i2o: Remove VLA usage 2018-05-18 12:03:51 -04:00
dpti.h scsi: dpt_i2o: stop using scsi_unregister 2018-03-15 00:25:37 -04:00
esp_scsi.c scsi: esp_scsi: Track residual for PIO transfers 2018-10-17 21:34:20 -04:00
esp_scsi.h scsi: esp_scsi: Track residual for PIO transfers 2018-10-17 21:34:20 -04:00
FlashPoint.c scsi: FlashPoint: Remove unnecessary parentheses 2018-09-25 20:45:53 -04:00
g_NCR5380.c scsi: NCR5380: Move bus reset to host reset 2017-08-25 17:21:11 -04:00
gdth_ioctl.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
gdth_proc.c scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
gdth_proc.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
gdth.c scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
gdth.h scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
gvp11.c scsi: drop bus reset for wd33c93-compatible boards 2017-08-25 17:21:10 -04:00
gvp11.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
hosts.c scsi: core: avoid host-wide host_busy counter for scsi_mq 2018-06-26 12:53:26 -04:00
hpsa_cmd.h scsi: hpsa: update discovery polling 2017-10-25 04:55:18 -04:00
hpsa.c scsi: hpsa: Use vmemdup_user to replace the open code 2018-09-25 20:44:21 -04:00
hpsa.h scsi: hpsa: correct enclosure sas address 2018-07-10 22:25:03 -04:00
hptiop.c scsi: hptiop: Simplify reset handling 2017-08-25 17:21:10 -04:00
hptiop.h
imm.c scsi: don't add scsi command result bytes 2018-06-26 12:27:07 -04:00
imm.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
initio.c
initio.h
ipr.c SCSI misc on 20180815 2018-08-15 22:06:26 -07:00
ipr.h scsi: ipr: Format HCAM overlay ID 0x41 2018-06-19 22:02:25 -04:00
ips.c scsi: ips: fix missing break in switch 2018-10-16 17:44:38 -04:00
ips.h scsi: ips: fix firmware timestamps for 32-bit 2018-04-20 19:40:17 -04:00
iscsi_boot_sysfs.c
iscsi_tcp.c scsi: iscsi_tcp: Explicitly cast param in iscsi_sw_tcp_host_get_param 2018-10-16 21:50:06 -04:00
iscsi_tcp.h
jazz_esp.c scsi: esp_scsi: move dma mapping into the core code 2018-10-15 23:00:38 -04:00
Kconfig scsi: myrs: Add Mylex RAID controller (SCSI interface) 2018-10-17 21:07:54 -04:00
lasi700.c parisc/scsi/lasi700: Fix section mismatches 2017-08-22 16:34:36 +02:00
libiscsi_tcp.c scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
libiscsi.c SCSI misc on 20180815 2018-08-15 22:06:26 -07:00
mac53c94.c treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
mac53c94.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mac_esp.c scsi: esp_scsi: Track residual for PIO transfers 2018-10-17 21:34:20 -04:00
mac_scsi.c scsi: NCR5380: Move bus reset to host reset 2017-08-25 17:21:11 -04:00
Makefile scsi: myrs: Add Mylex RAID controller (SCSI interface) 2018-10-17 21:07:54 -04:00
megaraid.c scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
megaraid.h scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
mesh.c scsi: don't add scsi command result bytes 2018-06-26 12:27:07 -04:00
mesh.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mvme16x_scsi.c
mvme147.c scsi: mvme147: stop using scsi_module.c 2018-03-19 22:54:47 -04:00
mvme147.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mvumi.c SCSI misc on 20180610 2018-06-10 13:01:12 -07:00
mvumi.h
myrb.c scsi: myrb: Add Mylex RAID controller (block interface) 2018-10-17 21:06:49 -04:00
myrb.h scsi: myrb: Add Mylex RAID controller (block interface) 2018-10-17 21:06:49 -04:00
myrs.c scsi: myrs: Add Mylex RAID controller (SCSI interface) 2018-10-17 21:07:54 -04:00
myrs.h scsi: myrs: Add Mylex RAID controller (SCSI interface) 2018-10-17 21:07:54 -04:00
ncr53c8xx.c scsi: ncr53c8xx: remove ScsiResult macro 2018-07-10 22:42:47 -04:00
ncr53c8xx.h
NCR5380.c scsi: NCR5380: Check for bus reset 2018-09-28 02:22:43 -04:00
NCR5380.h scsi: NCR5380: Have NCR5380_select() return a bool 2018-09-28 02:17:51 -04:00
nsp32_debug.c scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
nsp32_io.h
nsp32.c scsi: nsp32: fix logic bug in error handling 2017-10-16 22:38:44 -04:00
nsp32.h
osst_detect.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
osst_options.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
osst.c treewide: Use array_size() in vmalloc() 2018-06-12 16:19:22 -07:00
osst.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pmcraid.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
pmcraid.h scsi: pmcraid: Use sgl_alloc_order() and sgl_free_order() 2018-02-13 21:49:15 -05:00
ppa.c scsi: ppa: mark expected switch fall-throughs 2017-12-04 20:32:52 -05:00
ppa.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ps3rom.c
qla1280.c timer: Remove init_timer_on_stack() in favor of timer_setup_on_stack() 2017-10-05 15:01:17 +02:00
qla1280.h timer: Remove init_timer_on_stack() in favor of timer_setup_on_stack() 2017-10-05 15:01:17 +02:00
qlogicfas408.c scsi: qlogicfas: move bus_reset to host_reset 2017-08-25 17:21:11 -04:00
qlogicfas408.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
qlogicfas.c scsi: qlogicfas: move bus_reset to host_reset 2017-08-25 17:21:11 -04:00
qlogicpti.c scsi: read host_busy via scsi_host_busy() 2018-06-26 12:53:26 -04:00
qlogicpti.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
raid_class.c scsi: raid_attrs: fix unused variable warning 2018-08-30 07:21:04 -04:00
script_asm.pl
scsi_common.c scsi: core: doc. fixes to scsi_common.c 2017-12-11 21:39:39 -05:00
scsi_debug.c SCSI misc on 20180815 2018-08-15 22:06:26 -07:00
scsi_debugfs.c scsi: devinfo: use const_ilog2 for array indices 2018-04-20 19:14:28 -04:00
scsi_debugfs.h
scsi_devinfo.c scsi: devinfo: BLIST_RETRY_ASC_C1 for Fujitsu ETERNUS 2018-04-20 19:14:36 -04:00
scsi_dh.c scsi: scsi_dh: replace too broad "TP9" string with the exact models 2018-04-18 19:34:08 -04:00
scsi_error.c scsi: core: Remove scsi_block_when_processing_errors: message 2018-10-17 20:54:20 -04:00
scsi_ioctl.c scsi: core: check for equality of result byte values 2018-06-26 12:27:06 -04:00
scsi_lib_dma.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
scsi_lib.c scsi: core: Allow state transitions from OFFLINE to BLOCKED 2018-10-15 23:53:29 -04:00
scsi_logging.c
scsi_logging.h SCSI misc on 20171114 2017-11-14 16:23:44 -08:00
scsi_netlink.c
scsi_pm.c
scsi_priv.h scsi: dh: Remove scsi_dh_remove_device() 2017-12-07 21:13:45 -05:00
scsi_proc.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
scsi_sas_internal.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
scsi_scan.c scsi: core: check for equality of result byte values 2018-06-26 12:27:06 -04:00
scsi_sysctl.c
scsi_sysfs.c scsi: core: Avoid that SCSI device removal through sysfs triggers a deadlock 2018-08-02 15:53:36 -04:00
scsi_trace.c
scsi_transport_api.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
scsi_transport_fc.c SCSI misc on 20180815 2018-08-15 22:06:26 -07:00
scsi_transport_iscsi.c block: remove parent device reference from struct bsg_class_device 2018-05-29 13:00:25 -06:00
scsi_transport_sas.c scsi: libsas: delete dead code in scsi_transport_sas.c 2018-09-25 21:20:23 -04:00
scsi_transport_spi.c scsi: core: check for equality of result byte values 2018-06-26 12:27:06 -04:00
scsi_transport_srp.c for-4.18/block-20180603 2018-06-04 07:58:06 -07:00
scsi.c scsi: read host_busy via scsi_host_busy() 2018-06-26 12:53:26 -04:00
scsi.h scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
scsicam.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
sd_dif.c block: move dif_prepare/dif_complete functions to block layer 2018-07-30 08:27:02 -06:00
sd_zbc.c SCSI misc on 20180815 2018-08-15 22:06:26 -07:00
sd.c Merge branch 'ida-4.19' of git://git.infradead.org/users/willy/linux-dax 2018-08-26 11:48:42 -07:00
sd.h block: move dif_prepare/dif_complete functions to block layer 2018-07-30 08:27:02 -06:00
sense_codes.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ses.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
sg.c scsi: sg: remove bad blk_end_request_all() call 2018-10-16 17:49:57 -04:00
sgiwd93.c scsi: drop bus reset for wd33c93-compatible boards 2017-08-25 17:21:10 -04:00
sim710.c
sni_53c710.c
sr_ioctl.c block: Switch struct packet_command to use struct scsi_sense_hdr 2018-08-02 15:22:13 -06:00
sr_vendor.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
sr.c scsi: sr: Avoid that opening a CD-ROM hangs with runtime power management enabled 2018-08-03 13:53:51 -04:00
sr.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
st_options.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
st.c scsi: st: remove redundant pointer STbuffer 2018-08-08 21:15:54 -04:00
st.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
stex.c
storvsc_drv.c use the new async probing feature for the hyperv drivers 2018-07-03 13:02:28 +02:00
sun3_scsi_vme.c
sun3_scsi.c scsi: NCR5380: Move bus reset to host reset 2017-08-25 17:21:11 -04:00
sun3x_esp.c scsi: esp_scsi: move dma mapping into the core code 2018-10-15 23:00:38 -04:00
sun_esp.c scsi: esp_scsi: move dma mapping into the core code 2018-10-15 23:00:38 -04:00
virtio_scsi.c scsi: virtio_scsi: fix pi_bytes{out,in} on 4 KiB block size devices 2018-07-26 15:49:43 -06:00
vmw_pvscsi.c scsi: vmw_pvscsi: Return DID_RESET for status SAM_STAT_COMMAND_TERMINATED 2018-08-03 13:56:22 -04:00
vmw_pvscsi.h
wd33c93.c scsi: drop bus reset for wd33c93-compatible boards 2017-08-25 17:21:10 -04:00
wd33c93.h
wd719x.c scsi: wd719x: Use module_pci_driver 2018-05-01 23:30:12 -04:00
wd719x.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
xen-scsifront.c scsi: xen-scsifront: add error handling for xenbus_printf 2018-06-19 14:54:41 +02:00
zalon.c parisc/scsi/zalon: Fix section mismatches 2017-08-22 16:34:36 +02:00
zorro7xx.c
zorro_esp.c scsi: zorro_esp: Limit DMA transfers to 65535 bytes 2018-10-17 21:34:20 -04:00