summaryrefslogtreecommitdiff
path: root/sys/scsi/scsi_base.c
AgeCommit message (Collapse)Author
2009-06-02did not issue scsi_inquire with EVPD flag for USB mass strage classYojiro Uo
device, as some devices will be stalled by the request. ok krw@
2008-07-26Silence scsi_inquire_vpd() so devices that don't understand the necessaryKenneth R Westerback
INQUIRY options don't spam dmesg during probe. Seen by miod@ and kettenis@ for SCSI CD's. ok miod@
2008-07-05When SCSIDEBUG'ing, print data about to be written (for commandsKenneth R Westerback
flagged SCSI_DATA_OUT) and data that has been returned (for commands flagged SCSI_DATA_IN). This is better than just printing the data buffer before the command is issued since that does not include any data that has been read. e.g. INQUIRY data, as thib@ and I discovered. ok marco@
2008-06-22Replace MUSTEK_RETRIES, SCANJET_RETRIES and ST_RETRIES with SCSI_RETRIES,Kenneth R Westerback
all defined to 4. Replace some magic number 4's with SCSI_RETRIES. Fix a few lines that were now too long.
2008-06-21Oops. Forgot to actually change the retries in scsi_size() to SCSI_RETRIES.Kenneth R Westerback
2008-06-15Treat SENSE_NOT_READY_INIT_REQUIRED sense errors the same asKenneth R Westerback
SENSE_NOT_READY_BECOMING_READY sense errors. Some devices such as USB Zip250 drives return the former when they mean the latter. Give the first TEST UNIT READY command three times the usual retries so more devices have time to get ready. This allows more removable devices to detect media details and avoid issuing 'drive offline' messages. ok marco@
2008-06-14Nuke ADEV_NOTUR, always issue TEST UNIT READY to clear out power-upKenneth R Westerback
errors before issuing INQUIRY. Fixes Sony YE-Data floppy drive and probably other devices at the cost of possibly breaking some 10 year old CD-ROM drives. Un-special cases mvme68k which was forcing these initial TURs. Now wait for the inevitable weird USB device that breaks to surface. ok marco@ deraadt@
2008-06-13Merge show_scsi_xs() and show_scsi_cmd() and move invocation so theKenneth R Westerback
debug output shows the xs/command before it's issued rather than displaying it on command completion. Some commands don't come back and it would be nice to see their details. While here nuke invocations of scsi_show* in umass. If you want SCSI debug output use SCSI debug options. Only affects SCSI debug output. ok marco@
2007-11-25dont use the adapter_softc member of scsi_link as a softc anymore. theDavid Gwynne
"adapter_softc" is simply a way for the adapter to determine what scsibus it is now dealing with, not a pointer back to the adapters device struct. ok deraadt@ marco@
2007-09-16MALLOC/FREE -> malloc/free, M_ZERO, extraneous casts,Kenneth R Westerback
extraneous #include <malloc.h>
2007-06-23Implement disk sizes > 2^32-1. Code modelled on NetBSD.Kenneth R Westerback
Tested, tweaked and ok otto@
2007-05-31remove the scsi task thread, and replace it with the system workq.David Gwynne
"just :wq and do it" tedu@
2007-04-10``it's'' -> ``its'' when the grammar gods require this change.Miod Vallat
2007-04-03add a wrapper for querying vpd inquiry pagesDavid Gwynne
2007-04-03modernise scsi_inquiry. the length field has grown and now theres pages toDavid Gwynne
query. ok krw@
2006-12-12Give the SCSI layer the ability to requeue i/o's rejected by a driverKenneth R Westerback
using the new NO_CCB result. Currently a no-op since no driver produces that result. ok dlg@ marco@ deraadt@
2006-11-27more magic removalBob Beck
ok miod@, deraadt@
2006-11-27rework asc/ascq handling to get rid of "magic" 0x values in the code, changesBob Beck
asc/ascq handling to deal with the pair together rather than seperately, since modern scsi has long since polluted the "categories" of asc enough that you pretty much need to always look as ascq. ok krw@ deraadt@, dlg@
2006-11-04kthread_create returns an int, not a pointer. compare the return value toDavid Gwynne
0, not NULL.
2006-09-22implement a kernel thread that can be used by the midlayer or scsi driversDavid Gwynne
when they need a process context to do something. the most obvious task that springs to mind is attaches and detaches of devices on scsibus. ok krw@ marco@ deraadt@
2006-08-04Add ENOMEDIUM and EMEDIUMTYPE to report medium errors to userland programsBob Beck
when using removable media devices, along with changes to scsi_base to detect such cases in tapes other devices. This makes tar, dd, and friends report a semi useful error message instead of nonsense when there is nothing in the device. Includes libc minor bump, and will require the corresponding sets change. ok krw@ deraadt@
2006-07-29The version field of scsi_inquiry_data is not a simple numeric valueKenneth R Westerback
that specifies the version of SCSI being supported. Even the ANSI part that we use is complex. 4 means 2, 5 means 3 and 6 means 4. Translate and use the value correctly. Fixes SCSI5 and SCSI6 in dmesg. And properly protects SCSI2 devices from getting SCSI3 commands. "seems like an elegant solution to me" millert@ ok dlg@ marco@
2006-07-23Use REPORT LUNS to get the list of LUNs to probe. If such a list isKenneth R Westerback
obtained probe the LUNs given without checking for duplicate INQUIRY data. For non-USB, non-ATAPI, devices claiming to be SCSI-3 compliant. And the target must have something attached at LUN 0. If REPORT LUNS can't be used or isn't supported, the old scan process is used. Fixes Fibre Channel and SCSI enclosure devices that provide identical INQUIRY data for all LUNs and were thus being misprobed as having only LUN 0. Tested by Bob Kitella, dlg@, beck@. Suggestions from deraadt@. ok dlg@ beck@
2006-07-22If the LUN is > 7, don't try to stuff it into the three bits availableKenneth R Westerback
in the CDB for pre-IDENTIFY device LUNs.
2006-07-15catch "Media Removal Prevented" for devices that are capable of telling usBob Beck
when we're not allowed to yank things out of them. Instead of returning a generic EIO and having the kernel printf a scsi sense to the console, we now return EBUSY to userland and avoid the dmesg spewing. ok krw@
2006-07-13Eliminate scsi_link field 'scsi_version' and just use the INQUIRY dataKenneth R Westerback
stored in scsi_link. That's where the value came from anyway. Move 'luns' field to where 'scsi_version' used to be to preserve alignment. ok dlg@
2006-07-11scsi_get_xs raises splbio, but didnt lower it on error. tsk tsk.David Gwynne
ok krw@
2006-07-11knf and ansi. no binary changeDavid Gwynne
2006-05-28Add PCATCH to tsleep flags when a scsi command is waiting for an openingBob Beck
or is waiting to be retried, abort it when a signal interrupts the tsleep(). This fixes what was commited in version 1.92 to work properly. ok krw@
2006-05-13When SCSIDEBUG'ing, display the return value of scsi_interpret_sense()Kenneth R Westerback
in hex. This makes it consistant with the display of the same value in other messages.
2006-05-11Zap trailing whitespace.Kenneth R Westerback
2006-05-07If a device says a MODE SENSE command worked fine, do *not* try a MODEKenneth R Westerback
SENSE BIG command even if no page data was returned. Just accept the fact that the device does not have any such page data. This is more in line with the spec, and unbreaks devices (like the Neodio 8-in-1 USB Card Reader donated by Manuel Pata) which freak out when getting a MODE SENSE BIG. Should not break any 'working' device. ok pedro@ dlg@ marco@ 'Looks correct.' miod@
2006-05-07Zap a bunch of trailing whitespace.Kenneth R Westerback
2006-02-06typos from alexey dobriyan;Jason McIntyre
2005-11-28fix month-old breakage found by genududes (after henning's breakage)Michael Shalayeff
2005-11-13ATAPI Tape drives need 6 byte MODE SENSE commands according to atKenneth R Westerback
least one spec. Unlike other ATAPI devices. Fixes PR #4611.
2005-11-13Use SCSI_DELAY only once. Document it. Default to no delay.Kenneth R Westerback
Fixes two second system 'freeze' when umass device plugged in. Speeds up boot by not waiting for a minimum of 2 seconds at each scsi bus. ok jmc@ pedro@ deraadt@
2005-11-13Use scsi_delay() instead of delay() when waiting for scsi disk toKenneth R Westerback
become ready. Make verbiage SC_DEBUG(). ok dlg@
2005-11-07Death to superfluous verbiage. Suppress errors when getting the parametersKenneth R Westerback
for a raw partition like we suppress errors for the other operations on raw partitions. Replace 'could not get size' with more specific and informative SC_DEBUG() output. Silences a usb card reader that fgsch@ found. Now attach message is only 'sdX: drive offline'. Tested & ok fgsch@
2005-11-02Abstract delay code out and call it directly from XX_interpret_sense.Kenneth R Westerback
Makes the logic simpler by eliminating the XS_BUSY dance in xs->error, and will allow individual device types to delay different lengths on certain conditions. Allow SCSI_NOSLEEP commands to be retried without waiting. Who knows, they may work even without a delay. ok marco@
2005-10-22When a scsi command is waiting for an opening or is waiting to be retried,Kenneth R Westerback
abort it when a signal interrupts the tsleep(). Suggested by deraadt@. "I really like this" deraadt@ "I like this" marco@
2005-10-16Don't pound UNIT ATTENTION retries in as fast as possible. If we areKenneth R Westerback
going to retry the command, pause for a second to let the condition clear. Just as we do for certain NOT READY conditions. Found with the help of, and fixes Ed Wandasiewicz's IBM USB Memory key. ok deraadt@
2005-10-10Make some panic messages more useful.Kenneth R Westerback
2005-10-04shorter name for wait channelTheo de Raadt
2005-09-11Simplify code by changing struct scsi_mode_sense_buf{ union {}Kenneth R Westerback
headers; } to just union scsi_mode_sense_buf {}. No functional change. ok marco@
2005-08-29If a buffer larger than the max allowed is offered to scsi_mode_sense()Kenneth R Westerback
or scsi_mode_sense_big(), use as much of it as is allowed. Don't justi mask off the higher bits and possibly leave yourself with 0 space. Fixes problem aoyama@ found on luna88k tape drive. ok deraadt@.
2005-08-01Return 0 as the block size when READ_CAPACITY fails in scsi_size().Kenneth R Westerback
Prevents garbage being used as ssblksize in sd_get_parms(). Perhaps another nail in the coffin for PR4313.
2005-06-23Don't discard the blocksize information provided by the READ CAPACITYKenneth R Westerback
command. Return it in a new parameter to scsi_size.
2005-06-18Shorten a couple of structure names:Kenneth R Westerback
scsi_mode_direct_blk_desc -> scsi_direct_blk_desc scsi_mode_blk_desc_big -> scsi_blk_desc_big
2005-06-18Switch to trying 6 byte MODE SENSE commands (for non ATAPI devices atKenneth R Westerback
least) before 10 byte MODE SENSE. Some older devices can't/won't distinguish between the two and return 6 byte MODE SENSE data for 10 byte requests. Check that at least a full header was returned. Tested by miod@ hshoexer@ and Ed Wandasiewisz on troublesome devices.