NetBSD/sys/dev/scsipi
perry f8e8703b5e Add patch from Manuel Bouyer -- his mail message said:
By code inspection I found 2 bugs in the ATAPI code, one may be the cause
of your problem: A counter is not reset when issuing the request_sense
command. This is c_skip, the counter used to track the offset in the data
buffer when a data tranfer needs multiple phases. The effect of this is that
the sense data transfered may be stored outside the sense buffer (sense buffer
+ some, potentially several KB, offset). This can only occur in PIO mode,
DMA is not affected.
This doesn't occur in "normal" use because when reading a data CD, either
the sense is issued for a non-data command (in which case c_skip stays to
0), or an error occured and no data has been transfered, and c_skip is still 0.
I can't see a case where a data READ/WRITE could cause a sense tranfer without
error.

The second problem is that b_resid can be set to a false value (resulting of
the sense tranfer and not the data transfer). Again this is not a problem with
usual data tranfers because both values ends up being 0 when no error occurs.
1999-05-05 21:35:15 +00:00
..
atapi_all.h
atapi_base.c
atapi_cd.h
atapi_disk.h
atapi_wdc.c Add patch from Manuel Bouyer -- his mail message said: 1999-05-05 21:35:15 +00:00
atapiconf.c Revert to 1.23, this was not supposed to be checked in yet. 1999-02-15 18:43:08 +00:00
atapiconf.h
cd_atapi.c
cd_scsi.c
cd.c Add SCSI_IGNORE_NOT_READY to the flags for CDIOCCLOSE: some devices will 1999-04-08 16:12:31 +00:00
cdvar.h Bump CDRETRIES to 4. Now if a DMA error occurs, the driver should downgrade 1999-02-02 13:02:49 +00:00
ch.c Adjust timeout for 'ielem' to match the comment: 5 mn (not 5s) per element + 1999-04-04 12:20:48 +00:00
files.scsipi Don't bring scsi/atapi common files in under the "atapi" attribute. 1999-02-07 22:58:43 +00:00
if_se.c Simplify the copy loops a bit. 1998-12-12 16:58:10 +00:00
Makefile
scsi_all.h
scsi_base.c
scsi_cd.h
scsi_changer.h Correct the definition of the changer device capabilities page. The 1998-12-17 22:27:18 +00:00
scsi_ctron_ether.h
scsi_disk.h
scsi_message.h
scsi_scanner.h
scsi_tape.h
scsiconf.c add Adaptec RAID units as devices that do not return geometry pages 1998-12-10 18:13:29 +00:00
scsiconf.h Eliminate the moreluns entry as it makes no sense for fat SCSI busses (e.g, 1998-12-05 19:39:23 +00:00
scsipi_all.h Added parens around ADD_BYTES_LIM() macro definition to protects its 1998-12-30 11:17:34 +00:00
scsipi_base.c Now that we do real use of CDIOCCLOSE, we can have SSS_START|SSS_LOEJ 1999-04-07 12:47:27 +00:00
scsipi_base.h Remove xs_free_list; it no longer exists. 1998-12-08 00:20:16 +00:00
scsipi_cd.h
scsipi_debug.h
scsipi_disk.h
scsipi_ioctl.c Add missing XS_SELTIMEOUT case in user command completion path, returning 1999-01-11 22:07:08 +00:00
scsipi_verbose.c Fix typo. 1999-02-24 18:54:03 +00:00
scsipiconf.c
scsipiconf.h Fix a long-standing bug with the ACAP_* flags: 1999-04-08 11:29:01 +00:00
sd_atapi.c
sd_scsi.c
sd.c Update to slightly altered rnd_attach_source() api 1999-02-28 17:08:05 +00:00
sdvar.h
ss_mustek.c If scsipi_command() fails, always print out the error code. 1999-04-05 19:19:34 +00:00
ss_mustek.h
ss_scanjet.c If scsipi_command() fails, always print out the error code. 1999-04-05 19:19:34 +00:00
ss.c Abort transfer if b_blkno is negative. Closes PR kern/5553 by Johan Danielsson. 1999-02-10 12:29:50 +00:00
ssvar.h
st.c If scsipi_command() fails, always print out the error code. 1999-04-05 19:19:34 +00:00
su.c
uk.c When closing, wait for pending xfers to drain before deleting the reference 1998-12-08 00:19:27 +00:00