xref: /linux/Documentation/driver-api/scsi.rst (revision da51bbcdbace8f43adf6066934c3926b656376e5)
160202365SMauro Carvalho Chehab=====================
260202365SMauro Carvalho ChehabSCSI Interfaces Guide
360202365SMauro Carvalho Chehab=====================
460202365SMauro Carvalho Chehab
560202365SMauro Carvalho Chehab:Author: James Bottomley
660202365SMauro Carvalho Chehab:Author: Rob Landley
760202365SMauro Carvalho Chehab
860202365SMauro Carvalho ChehabIntroduction
960202365SMauro Carvalho Chehab============
1060202365SMauro Carvalho Chehab
1160202365SMauro Carvalho ChehabProtocol vs bus
1260202365SMauro Carvalho Chehab---------------
1360202365SMauro Carvalho Chehab
1460202365SMauro Carvalho ChehabOnce upon a time, the Small Computer Systems Interface defined both a
1560202365SMauro Carvalho Chehabparallel I/O bus and a data protocol to connect a wide variety of
1660202365SMauro Carvalho Chehabperipherals (disk drives, tape drives, modems, printers, scanners,
1760202365SMauro Carvalho Chehaboptical drives, test equipment, and medical devices) to a host computer.
1860202365SMauro Carvalho Chehab
1960202365SMauro Carvalho ChehabAlthough the old parallel (fast/wide/ultra) SCSI bus has largely fallen
2060202365SMauro Carvalho Chehabout of use, the SCSI command set is more widely used than ever to
2160202365SMauro Carvalho Chehabcommunicate with devices over a number of different busses.
2260202365SMauro Carvalho Chehab
2360202365SMauro Carvalho ChehabThe `SCSI protocol <http://www.t10.org/scsi-3.htm>`__ is a big-endian
2460202365SMauro Carvalho Chehabpeer-to-peer packet based protocol. SCSI commands are 6, 10, 12, or 16
2560202365SMauro Carvalho Chehabbytes long, often followed by an associated data payload.
2660202365SMauro Carvalho Chehab
2760202365SMauro Carvalho ChehabSCSI commands can be transported over just about any kind of bus, and
2860202365SMauro Carvalho Chehabare the default protocol for storage devices attached to USB, SATA, SAS,
2960202365SMauro Carvalho ChehabFibre Channel, FireWire, and ATAPI devices. SCSI packets are also
3060202365SMauro Carvalho Chehabcommonly exchanged over Infiniband,
319cb07248SRandy Dunlap`I2O <http://i2o.shadowconnect.com/faq.php>`__, TCP/IP
3260202365SMauro Carvalho Chehab(`iSCSI <https://en.wikipedia.org/wiki/ISCSI>`__), even `Parallel
3360202365SMauro Carvalho Chehabports <http://cyberelk.net/tim/parport/parscsi.html>`__.
3460202365SMauro Carvalho Chehab
3560202365SMauro Carvalho ChehabDesign of the Linux SCSI subsystem
3660202365SMauro Carvalho Chehab----------------------------------
3760202365SMauro Carvalho Chehab
3860202365SMauro Carvalho ChehabThe SCSI subsystem uses a three layer design, with upper, mid, and low
3960202365SMauro Carvalho Chehablayers. Every operation involving the SCSI subsystem (such as reading a
4060202365SMauro Carvalho Chehabsector from a disk) uses one driver at each of the 3 levels: one upper
4160202365SMauro Carvalho Chehablayer driver, one lower layer driver, and the SCSI midlayer.
4260202365SMauro Carvalho Chehab
4360202365SMauro Carvalho ChehabThe SCSI upper layer provides the interface between userspace and the
4460202365SMauro Carvalho Chehabkernel, in the form of block and char device nodes for I/O and ioctl().
4560202365SMauro Carvalho ChehabThe SCSI lower layer contains drivers for specific hardware devices.
4660202365SMauro Carvalho Chehab
4760202365SMauro Carvalho ChehabIn between is the SCSI mid-layer, analogous to a network routing layer
4860202365SMauro Carvalho Chehabsuch as the IPv4 stack. The SCSI mid-layer routes a packet based data
4960202365SMauro Carvalho Chehabprotocol between the upper layer's /dev nodes and the corresponding
5060202365SMauro Carvalho Chehabdevices in the lower layer. It manages command queues, provides error
5160202365SMauro Carvalho Chehabhandling and power management functions, and responds to ioctl()
5260202365SMauro Carvalho Chehabrequests.
5360202365SMauro Carvalho Chehab
5460202365SMauro Carvalho ChehabSCSI upper layer
5560202365SMauro Carvalho Chehab================
5660202365SMauro Carvalho Chehab
5760202365SMauro Carvalho ChehabThe upper layer supports the user-kernel interface by providing device
5860202365SMauro Carvalho Chehabnodes.
5960202365SMauro Carvalho Chehab
6060202365SMauro Carvalho Chehabsd (SCSI Disk)
6160202365SMauro Carvalho Chehab--------------
6260202365SMauro Carvalho Chehab
6360202365SMauro Carvalho Chehabsd (sd_mod.o)
6460202365SMauro Carvalho Chehab
6560202365SMauro Carvalho Chehabsr (SCSI CD-ROM)
6660202365SMauro Carvalho Chehab----------------
6760202365SMauro Carvalho Chehab
6860202365SMauro Carvalho Chehabsr (sr_mod.o)
6960202365SMauro Carvalho Chehab
7060202365SMauro Carvalho Chehabst (SCSI Tape)
7160202365SMauro Carvalho Chehab--------------
7260202365SMauro Carvalho Chehab
7360202365SMauro Carvalho Chehabst (st.o)
7460202365SMauro Carvalho Chehab
7560202365SMauro Carvalho Chehabsg (SCSI Generic)
7660202365SMauro Carvalho Chehab-----------------
7760202365SMauro Carvalho Chehab
7860202365SMauro Carvalho Chehabsg (sg.o)
7960202365SMauro Carvalho Chehab
8060202365SMauro Carvalho Chehabch (SCSI Media Changer)
8160202365SMauro Carvalho Chehab-----------------------
8260202365SMauro Carvalho Chehab
8360202365SMauro Carvalho Chehabch (ch.c)
8460202365SMauro Carvalho Chehab
8560202365SMauro Carvalho ChehabSCSI mid layer
8660202365SMauro Carvalho Chehab==============
8760202365SMauro Carvalho Chehab
8860202365SMauro Carvalho ChehabSCSI midlayer implementation
8960202365SMauro Carvalho Chehab----------------------------
9060202365SMauro Carvalho Chehab
9160202365SMauro Carvalho Chehabinclude/scsi/scsi_device.h
9260202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~
9360202365SMauro Carvalho Chehab
9460202365SMauro Carvalho Chehab.. kernel-doc:: include/scsi/scsi_device.h
9560202365SMauro Carvalho Chehab   :internal:
9660202365SMauro Carvalho Chehab
9760202365SMauro Carvalho Chehabdrivers/scsi/scsi.c
9860202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~
9960202365SMauro Carvalho Chehab
10060202365SMauro Carvalho ChehabMain file for the SCSI midlayer.
10160202365SMauro Carvalho Chehab
10260202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/scsi.c
10360202365SMauro Carvalho Chehab   :export:
10460202365SMauro Carvalho Chehab
10560202365SMauro Carvalho Chehabdrivers/scsi/scsicam.c
10660202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~
10760202365SMauro Carvalho Chehab
10860202365SMauro Carvalho Chehab`SCSI Common Access
10960202365SMauro Carvalho ChehabMethod <http://www.t10.org/ftp/t10/drafts/cam/cam-r12b.pdf>`__ support
11060202365SMauro Carvalho Chehabfunctions, for use with HDIO_GETGEO, etc.
11160202365SMauro Carvalho Chehab
11260202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/scsicam.c
11360202365SMauro Carvalho Chehab   :export:
11460202365SMauro Carvalho Chehab
11560202365SMauro Carvalho Chehabdrivers/scsi/scsi_error.c
11660202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~
11760202365SMauro Carvalho Chehab
11860202365SMauro Carvalho ChehabCommon SCSI error/timeout handling routines.
11960202365SMauro Carvalho Chehab
12060202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/scsi_error.c
12160202365SMauro Carvalho Chehab   :export:
12260202365SMauro Carvalho Chehab
12360202365SMauro Carvalho Chehabdrivers/scsi/scsi_devinfo.c
12460202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~
12560202365SMauro Carvalho Chehab
12660202365SMauro Carvalho ChehabManage scsi_dev_info_list, which tracks blacklisted and whitelisted
12760202365SMauro Carvalho Chehabdevices.
12860202365SMauro Carvalho Chehab
12960202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/scsi_devinfo.c
13060202365SMauro Carvalho Chehab   :internal:
13160202365SMauro Carvalho Chehab
13260202365SMauro Carvalho Chehabdrivers/scsi/scsi_ioctl.c
13360202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~
13460202365SMauro Carvalho Chehab
13560202365SMauro Carvalho ChehabHandle ioctl() calls for SCSI devices.
13660202365SMauro Carvalho Chehab
13760202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/scsi_ioctl.c
13860202365SMauro Carvalho Chehab   :export:
13960202365SMauro Carvalho Chehab
14060202365SMauro Carvalho Chehabdrivers/scsi/scsi_lib.c
14160202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~
14260202365SMauro Carvalho Chehab
14360202365SMauro Carvalho ChehabSCSI queuing library.
14460202365SMauro Carvalho Chehab
14560202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/scsi_lib.c
14660202365SMauro Carvalho Chehab   :export:
14760202365SMauro Carvalho Chehab
14860202365SMauro Carvalho Chehabdrivers/scsi/scsi_lib_dma.c
14960202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
15060202365SMauro Carvalho Chehab
15160202365SMauro Carvalho ChehabSCSI library functions depending on DMA (map and unmap scatter-gather
15260202365SMauro Carvalho Chehablists).
15360202365SMauro Carvalho Chehab
15460202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/scsi_lib_dma.c
15560202365SMauro Carvalho Chehab   :export:
15660202365SMauro Carvalho Chehab
15760202365SMauro Carvalho Chehabdrivers/scsi/scsi_proc.c
15860202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~
15960202365SMauro Carvalho Chehab
16060202365SMauro Carvalho ChehabThe functions in this file provide an interface between the PROC file
16160202365SMauro Carvalho Chehabsystem and the SCSI device drivers It is mainly used for debugging,
16260202365SMauro Carvalho Chehabstatistics and to pass information directly to the lowlevel driver. I.E.
16360202365SMauro Carvalho Chehabplumbing to manage /proc/scsi/\*
16460202365SMauro Carvalho Chehab
16560202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/scsi_proc.c
16660202365SMauro Carvalho Chehab   :internal:
16760202365SMauro Carvalho Chehab
16860202365SMauro Carvalho Chehabdrivers/scsi/scsi_netlink.c
16960202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17060202365SMauro Carvalho Chehab
17160202365SMauro Carvalho ChehabInfrastructure to provide async events from transports to userspace via
17260202365SMauro Carvalho Chehabnetlink, using a single NETLINK_SCSITRANSPORT protocol for all
17360202365SMauro Carvalho Chehabtransports. See `the original patch
17460202365SMauro Carvalho Chehabsubmission <http://marc.info/?l=linux-scsi&m=115507374832500&w=2>`__ for
17560202365SMauro Carvalho Chehabmore details.
17660202365SMauro Carvalho Chehab
17760202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/scsi_netlink.c
17860202365SMauro Carvalho Chehab   :internal:
17960202365SMauro Carvalho Chehab
18060202365SMauro Carvalho Chehabdrivers/scsi/scsi_scan.c
18160202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~
18260202365SMauro Carvalho Chehab
18360202365SMauro Carvalho ChehabScan a host to determine which (if any) devices are attached. The
18460202365SMauro Carvalho Chehabgeneral scanning/probing algorithm is as follows, exceptions are made to
18560202365SMauro Carvalho Chehabit depending on device specific flags, compilation options, and global
18660202365SMauro Carvalho Chehabvariable (boot or module load time) settings. A specific LUN is scanned
18760202365SMauro Carvalho Chehabvia an INQUIRY command; if the LUN has a device attached, a scsi_device
18860202365SMauro Carvalho Chehabis allocated and setup for it. For every id of every channel on the
18960202365SMauro Carvalho Chehabgiven host, start by scanning LUN 0. Skip hosts that don't respond at
19060202365SMauro Carvalho Chehaball to a scan of LUN 0. Otherwise, if LUN 0 has a device attached,
19160202365SMauro Carvalho Chehaballocate and setup a scsi_device for it. If target is SCSI-3 or up,
19260202365SMauro Carvalho Chehabissue a REPORT LUN, and scan all of the LUNs returned by the REPORT LUN;
19360202365SMauro Carvalho Chehabelse, sequentially scan LUNs up until some maximum is reached, or a LUN
19460202365SMauro Carvalho Chehabis seen that cannot have a device attached to it.
19560202365SMauro Carvalho Chehab
19660202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/scsi_scan.c
19760202365SMauro Carvalho Chehab   :internal:
19860202365SMauro Carvalho Chehab
19960202365SMauro Carvalho Chehabdrivers/scsi/scsi_sysctl.c
20060202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~
20160202365SMauro Carvalho Chehab
20260202365SMauro Carvalho ChehabSet up the sysctl entry: "/dev/scsi/logging_level"
20360202365SMauro Carvalho Chehab(DEV_SCSI_LOGGING_LEVEL) which sets/returns scsi_logging_level.
20460202365SMauro Carvalho Chehab
20560202365SMauro Carvalho Chehabdrivers/scsi/scsi_sysfs.c
20660202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~
20760202365SMauro Carvalho Chehab
20860202365SMauro Carvalho ChehabSCSI sysfs interface routines.
20960202365SMauro Carvalho Chehab
21060202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/scsi_sysfs.c
21160202365SMauro Carvalho Chehab   :export:
21260202365SMauro Carvalho Chehab
21360202365SMauro Carvalho Chehabdrivers/scsi/hosts.c
21460202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~
21560202365SMauro Carvalho Chehab
21660202365SMauro Carvalho Chehabmid to lowlevel SCSI driver interface
21760202365SMauro Carvalho Chehab
21860202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/hosts.c
21960202365SMauro Carvalho Chehab   :export:
22060202365SMauro Carvalho Chehab
221e8fd31c5SRandy Dunlapdrivers/scsi/scsi_common.c
222e8fd31c5SRandy Dunlap~~~~~~~~~~~~~~~~~~~~~~~~~~
223e8fd31c5SRandy Dunlap
224e8fd31c5SRandy Dunlapgeneral support functions
225e8fd31c5SRandy Dunlap
226e8fd31c5SRandy Dunlap.. kernel-doc:: drivers/scsi/scsi_common.c
227e8fd31c5SRandy Dunlap   :export:
228e8fd31c5SRandy Dunlap
22960202365SMauro Carvalho ChehabTransport classes
23060202365SMauro Carvalho Chehab-----------------
23160202365SMauro Carvalho Chehab
23260202365SMauro Carvalho ChehabTransport classes are service libraries for drivers in the SCSI lower
23360202365SMauro Carvalho Chehablayer, which expose transport attributes in sysfs.
23460202365SMauro Carvalho Chehab
23560202365SMauro Carvalho ChehabFibre Channel transport
23660202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~
23760202365SMauro Carvalho Chehab
23860202365SMauro Carvalho ChehabThe file drivers/scsi/scsi_transport_fc.c defines transport attributes
23960202365SMauro Carvalho Chehabfor Fibre Channel.
24060202365SMauro Carvalho Chehab
24160202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/scsi_transport_fc.c
24260202365SMauro Carvalho Chehab   :export:
24360202365SMauro Carvalho Chehab
24460202365SMauro Carvalho ChehabiSCSI transport class
24560202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~
24660202365SMauro Carvalho Chehab
24760202365SMauro Carvalho ChehabThe file drivers/scsi/scsi_transport_iscsi.c defines transport
24860202365SMauro Carvalho Chehabattributes for the iSCSI class, which sends SCSI packets over TCP/IP
24960202365SMauro Carvalho Chehabconnections.
25060202365SMauro Carvalho Chehab
25160202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/scsi_transport_iscsi.c
25260202365SMauro Carvalho Chehab   :export:
25360202365SMauro Carvalho Chehab
25460202365SMauro Carvalho ChehabSerial Attached SCSI (SAS) transport class
25560202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
25660202365SMauro Carvalho Chehab
25760202365SMauro Carvalho ChehabThe file drivers/scsi/scsi_transport_sas.c defines transport
25860202365SMauro Carvalho Chehabattributes for Serial Attached SCSI, a variant of SATA aimed at large
25960202365SMauro Carvalho Chehabhigh-end systems.
26060202365SMauro Carvalho Chehab
26160202365SMauro Carvalho ChehabThe SAS transport class contains common code to deal with SAS HBAs, an
262*da51bbcdSRemington Brasgaapproximated representation of SAS topologies in the driver model, and
26360202365SMauro Carvalho Chehabvarious sysfs attributes to expose these topologies and management
26460202365SMauro Carvalho Chehabinterfaces to userspace.
26560202365SMauro Carvalho Chehab
26660202365SMauro Carvalho ChehabIn addition to the basic SCSI core objects this transport class
26760202365SMauro Carvalho Chehabintroduces two additional intermediate objects: The SAS PHY as
26860202365SMauro Carvalho Chehabrepresented by struct sas_phy defines an "outgoing" PHY on a SAS HBA or
26960202365SMauro Carvalho ChehabExpander, and the SAS remote PHY represented by struct sas_rphy defines
27060202365SMauro Carvalho Chehaban "incoming" PHY on a SAS Expander or end device. Note that this is
27160202365SMauro Carvalho Chehabpurely a software concept, the underlying hardware for a PHY and a
27260202365SMauro Carvalho Chehabremote PHY is the exactly the same.
27360202365SMauro Carvalho Chehab
27460202365SMauro Carvalho ChehabThere is no concept of a SAS port in this code, users can see what PHYs
27560202365SMauro Carvalho Chehabform a wide port based on the port_identifier attribute, which is the
27660202365SMauro Carvalho Chehabsame for all PHYs in a port.
27760202365SMauro Carvalho Chehab
27860202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/scsi_transport_sas.c
27960202365SMauro Carvalho Chehab   :export:
28060202365SMauro Carvalho Chehab
28160202365SMauro Carvalho ChehabSATA transport class
28260202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~
28360202365SMauro Carvalho Chehab
28460202365SMauro Carvalho ChehabThe SATA transport is handled by libata, which has its own book of
28560202365SMauro Carvalho Chehabdocumentation in this directory.
28660202365SMauro Carvalho Chehab
28760202365SMauro Carvalho ChehabParallel SCSI (SPI) transport class
28860202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28960202365SMauro Carvalho Chehab
29060202365SMauro Carvalho ChehabThe file drivers/scsi/scsi_transport_spi.c defines transport
29160202365SMauro Carvalho Chehabattributes for traditional (fast/wide/ultra) SCSI busses.
29260202365SMauro Carvalho Chehab
29360202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/scsi_transport_spi.c
29460202365SMauro Carvalho Chehab   :export:
29560202365SMauro Carvalho Chehab
29660202365SMauro Carvalho ChehabSCSI RDMA (SRP) transport class
29760202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
29860202365SMauro Carvalho Chehab
29960202365SMauro Carvalho ChehabThe file drivers/scsi/scsi_transport_srp.c defines transport
30060202365SMauro Carvalho Chehabattributes for SCSI over Remote Direct Memory Access.
30160202365SMauro Carvalho Chehab
30260202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/scsi_transport_srp.c
30360202365SMauro Carvalho Chehab   :export:
30460202365SMauro Carvalho Chehab
30560202365SMauro Carvalho ChehabSCSI lower layer
30660202365SMauro Carvalho Chehab================
30760202365SMauro Carvalho Chehab
30860202365SMauro Carvalho ChehabHost Bus Adapter transport types
30960202365SMauro Carvalho Chehab--------------------------------
31060202365SMauro Carvalho Chehab
31160202365SMauro Carvalho ChehabMany modern device controllers use the SCSI command set as a protocol to
31260202365SMauro Carvalho Chehabcommunicate with their devices through many different types of physical
31360202365SMauro Carvalho Chehabconnections.
31460202365SMauro Carvalho Chehab
31560202365SMauro Carvalho ChehabIn SCSI language a bus capable of carrying SCSI commands is called a
31660202365SMauro Carvalho Chehab"transport", and a controller connecting to such a bus is called a "host
31760202365SMauro Carvalho Chehabbus adapter" (HBA).
31860202365SMauro Carvalho Chehab
31960202365SMauro Carvalho ChehabDebug transport
32060202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~
32160202365SMauro Carvalho Chehab
32260202365SMauro Carvalho ChehabThe file drivers/scsi/scsi_debug.c simulates a host adapter with a
32360202365SMauro Carvalho Chehabvariable number of disks (or disk like devices) attached, sharing a
32460202365SMauro Carvalho Chehabcommon amount of RAM. Does a lot of checking to make sure that we are
32560202365SMauro Carvalho Chehabnot getting blocks mixed up, and panics the kernel if anything out of
32660202365SMauro Carvalho Chehabthe ordinary is seen.
32760202365SMauro Carvalho Chehab
32860202365SMauro Carvalho ChehabTo be more realistic, the simulated devices have the transport
32960202365SMauro Carvalho Chehabattributes of SAS disks.
33060202365SMauro Carvalho Chehab
33160202365SMauro Carvalho ChehabFor documentation see http://sg.danny.cz/sg/sdebug26.html
33260202365SMauro Carvalho Chehab
33360202365SMauro Carvalho Chehabtodo
33460202365SMauro Carvalho Chehab~~~~
33560202365SMauro Carvalho Chehab
33660202365SMauro Carvalho ChehabParallel (fast/wide/ultra) SCSI, USB, SATA, SAS, Fibre Channel,
3376a59fd77SRandy DunlapFireWire, ATAPI devices, Infiniband, I2O, Parallel ports,
33860202365SMauro Carvalho Chehabnetlink...
339