xref: /openbmc/linux/Documentation/driver-api/scsi.rst (revision e8fd31c5543240d866492769e0e3b6a54b1df7b7)
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_module.c
15860202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~
15960202365SMauro Carvalho Chehab
16060202365SMauro Carvalho ChehabThe file drivers/scsi/scsi_module.c contains legacy support for
16160202365SMauro Carvalho Chehabold-style host templates. It should never be used by any new driver.
16260202365SMauro Carvalho Chehab
16360202365SMauro Carvalho Chehabdrivers/scsi/scsi_proc.c
16460202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~
16560202365SMauro Carvalho Chehab
16660202365SMauro Carvalho ChehabThe functions in this file provide an interface between the PROC file
16760202365SMauro Carvalho Chehabsystem and the SCSI device drivers It is mainly used for debugging,
16860202365SMauro Carvalho Chehabstatistics and to pass information directly to the lowlevel driver. I.E.
16960202365SMauro Carvalho Chehabplumbing to manage /proc/scsi/\*
17060202365SMauro Carvalho Chehab
17160202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/scsi_proc.c
17260202365SMauro Carvalho Chehab   :internal:
17360202365SMauro Carvalho Chehab
17460202365SMauro Carvalho Chehabdrivers/scsi/scsi_netlink.c
17560202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17660202365SMauro Carvalho Chehab
17760202365SMauro Carvalho ChehabInfrastructure to provide async events from transports to userspace via
17860202365SMauro Carvalho Chehabnetlink, using a single NETLINK_SCSITRANSPORT protocol for all
17960202365SMauro Carvalho Chehabtransports. See `the original patch
18060202365SMauro Carvalho Chehabsubmission <http://marc.info/?l=linux-scsi&m=115507374832500&w=2>`__ for
18160202365SMauro Carvalho Chehabmore details.
18260202365SMauro Carvalho Chehab
18360202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/scsi_netlink.c
18460202365SMauro Carvalho Chehab   :internal:
18560202365SMauro Carvalho Chehab
18660202365SMauro Carvalho Chehabdrivers/scsi/scsi_scan.c
18760202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~
18860202365SMauro Carvalho Chehab
18960202365SMauro Carvalho ChehabScan a host to determine which (if any) devices are attached. The
19060202365SMauro Carvalho Chehabgeneral scanning/probing algorithm is as follows, exceptions are made to
19160202365SMauro Carvalho Chehabit depending on device specific flags, compilation options, and global
19260202365SMauro Carvalho Chehabvariable (boot or module load time) settings. A specific LUN is scanned
19360202365SMauro Carvalho Chehabvia an INQUIRY command; if the LUN has a device attached, a scsi_device
19460202365SMauro Carvalho Chehabis allocated and setup for it. For every id of every channel on the
19560202365SMauro Carvalho Chehabgiven host, start by scanning LUN 0. Skip hosts that don't respond at
19660202365SMauro Carvalho Chehaball to a scan of LUN 0. Otherwise, if LUN 0 has a device attached,
19760202365SMauro Carvalho Chehaballocate and setup a scsi_device for it. If target is SCSI-3 or up,
19860202365SMauro Carvalho Chehabissue a REPORT LUN, and scan all of the LUNs returned by the REPORT LUN;
19960202365SMauro Carvalho Chehabelse, sequentially scan LUNs up until some maximum is reached, or a LUN
20060202365SMauro Carvalho Chehabis seen that cannot have a device attached to it.
20160202365SMauro Carvalho Chehab
20260202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/scsi_scan.c
20360202365SMauro Carvalho Chehab   :internal:
20460202365SMauro Carvalho Chehab
20560202365SMauro Carvalho Chehabdrivers/scsi/scsi_sysctl.c
20660202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~
20760202365SMauro Carvalho Chehab
20860202365SMauro Carvalho ChehabSet up the sysctl entry: "/dev/scsi/logging_level"
20960202365SMauro Carvalho Chehab(DEV_SCSI_LOGGING_LEVEL) which sets/returns scsi_logging_level.
21060202365SMauro Carvalho Chehab
21160202365SMauro Carvalho Chehabdrivers/scsi/scsi_sysfs.c
21260202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~
21360202365SMauro Carvalho Chehab
21460202365SMauro Carvalho ChehabSCSI sysfs interface routines.
21560202365SMauro Carvalho Chehab
21660202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/scsi_sysfs.c
21760202365SMauro Carvalho Chehab   :export:
21860202365SMauro Carvalho Chehab
21960202365SMauro Carvalho Chehabdrivers/scsi/hosts.c
22060202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~
22160202365SMauro Carvalho Chehab
22260202365SMauro Carvalho Chehabmid to lowlevel SCSI driver interface
22360202365SMauro Carvalho Chehab
22460202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/hosts.c
22560202365SMauro Carvalho Chehab   :export:
22660202365SMauro Carvalho Chehab
227*e8fd31c5SRandy Dunlapdrivers/scsi/scsi_common.c
228*e8fd31c5SRandy Dunlap~~~~~~~~~~~~~~~~~~~~~~~~~~
229*e8fd31c5SRandy Dunlap
230*e8fd31c5SRandy Dunlapgeneral support functions
231*e8fd31c5SRandy Dunlap
232*e8fd31c5SRandy Dunlap.. kernel-doc:: drivers/scsi/scsi_common.c
233*e8fd31c5SRandy Dunlap   :export:
234*e8fd31c5SRandy Dunlap
23560202365SMauro Carvalho ChehabTransport classes
23660202365SMauro Carvalho Chehab-----------------
23760202365SMauro Carvalho Chehab
23860202365SMauro Carvalho ChehabTransport classes are service libraries for drivers in the SCSI lower
23960202365SMauro Carvalho Chehablayer, which expose transport attributes in sysfs.
24060202365SMauro Carvalho Chehab
24160202365SMauro Carvalho ChehabFibre Channel transport
24260202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~
24360202365SMauro Carvalho Chehab
24460202365SMauro Carvalho ChehabThe file drivers/scsi/scsi_transport_fc.c defines transport attributes
24560202365SMauro Carvalho Chehabfor Fibre Channel.
24660202365SMauro Carvalho Chehab
24760202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/scsi_transport_fc.c
24860202365SMauro Carvalho Chehab   :export:
24960202365SMauro Carvalho Chehab
25060202365SMauro Carvalho ChehabiSCSI transport class
25160202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~
25260202365SMauro Carvalho Chehab
25360202365SMauro Carvalho ChehabThe file drivers/scsi/scsi_transport_iscsi.c defines transport
25460202365SMauro Carvalho Chehabattributes for the iSCSI class, which sends SCSI packets over TCP/IP
25560202365SMauro Carvalho Chehabconnections.
25660202365SMauro Carvalho Chehab
25760202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/scsi_transport_iscsi.c
25860202365SMauro Carvalho Chehab   :export:
25960202365SMauro Carvalho Chehab
26060202365SMauro Carvalho ChehabSerial Attached SCSI (SAS) transport class
26160202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
26260202365SMauro Carvalho Chehab
26360202365SMauro Carvalho ChehabThe file drivers/scsi/scsi_transport_sas.c defines transport
26460202365SMauro Carvalho Chehabattributes for Serial Attached SCSI, a variant of SATA aimed at large
26560202365SMauro Carvalho Chehabhigh-end systems.
26660202365SMauro Carvalho Chehab
26760202365SMauro Carvalho ChehabThe SAS transport class contains common code to deal with SAS HBAs, an
26860202365SMauro Carvalho Chehabaproximated representation of SAS topologies in the driver model, and
26960202365SMauro Carvalho Chehabvarious sysfs attributes to expose these topologies and management
27060202365SMauro Carvalho Chehabinterfaces to userspace.
27160202365SMauro Carvalho Chehab
27260202365SMauro Carvalho ChehabIn addition to the basic SCSI core objects this transport class
27360202365SMauro Carvalho Chehabintroduces two additional intermediate objects: The SAS PHY as
27460202365SMauro Carvalho Chehabrepresented by struct sas_phy defines an "outgoing" PHY on a SAS HBA or
27560202365SMauro Carvalho ChehabExpander, and the SAS remote PHY represented by struct sas_rphy defines
27660202365SMauro Carvalho Chehaban "incoming" PHY on a SAS Expander or end device. Note that this is
27760202365SMauro Carvalho Chehabpurely a software concept, the underlying hardware for a PHY and a
27860202365SMauro Carvalho Chehabremote PHY is the exactly the same.
27960202365SMauro Carvalho Chehab
28060202365SMauro Carvalho ChehabThere is no concept of a SAS port in this code, users can see what PHYs
28160202365SMauro Carvalho Chehabform a wide port based on the port_identifier attribute, which is the
28260202365SMauro Carvalho Chehabsame for all PHYs in a port.
28360202365SMauro Carvalho Chehab
28460202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/scsi_transport_sas.c
28560202365SMauro Carvalho Chehab   :export:
28660202365SMauro Carvalho Chehab
28760202365SMauro Carvalho ChehabSATA transport class
28860202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~
28960202365SMauro Carvalho Chehab
29060202365SMauro Carvalho ChehabThe SATA transport is handled by libata, which has its own book of
29160202365SMauro Carvalho Chehabdocumentation in this directory.
29260202365SMauro Carvalho Chehab
29360202365SMauro Carvalho ChehabParallel SCSI (SPI) transport class
29460202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
29560202365SMauro Carvalho Chehab
29660202365SMauro Carvalho ChehabThe file drivers/scsi/scsi_transport_spi.c defines transport
29760202365SMauro Carvalho Chehabattributes for traditional (fast/wide/ultra) SCSI busses.
29860202365SMauro Carvalho Chehab
29960202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/scsi_transport_spi.c
30060202365SMauro Carvalho Chehab   :export:
30160202365SMauro Carvalho Chehab
30260202365SMauro Carvalho ChehabSCSI RDMA (SRP) transport class
30360202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
30460202365SMauro Carvalho Chehab
30560202365SMauro Carvalho ChehabThe file drivers/scsi/scsi_transport_srp.c defines transport
30660202365SMauro Carvalho Chehabattributes for SCSI over Remote Direct Memory Access.
30760202365SMauro Carvalho Chehab
30860202365SMauro Carvalho Chehab.. kernel-doc:: drivers/scsi/scsi_transport_srp.c
30960202365SMauro Carvalho Chehab   :export:
31060202365SMauro Carvalho Chehab
31160202365SMauro Carvalho ChehabSCSI lower layer
31260202365SMauro Carvalho Chehab================
31360202365SMauro Carvalho Chehab
31460202365SMauro Carvalho ChehabHost Bus Adapter transport types
31560202365SMauro Carvalho Chehab--------------------------------
31660202365SMauro Carvalho Chehab
31760202365SMauro Carvalho ChehabMany modern device controllers use the SCSI command set as a protocol to
31860202365SMauro Carvalho Chehabcommunicate with their devices through many different types of physical
31960202365SMauro Carvalho Chehabconnections.
32060202365SMauro Carvalho Chehab
32160202365SMauro Carvalho ChehabIn SCSI language a bus capable of carrying SCSI commands is called a
32260202365SMauro Carvalho Chehab"transport", and a controller connecting to such a bus is called a "host
32360202365SMauro Carvalho Chehabbus adapter" (HBA).
32460202365SMauro Carvalho Chehab
32560202365SMauro Carvalho ChehabDebug transport
32660202365SMauro Carvalho Chehab~~~~~~~~~~~~~~~
32760202365SMauro Carvalho Chehab
32860202365SMauro Carvalho ChehabThe file drivers/scsi/scsi_debug.c simulates a host adapter with a
32960202365SMauro Carvalho Chehabvariable number of disks (or disk like devices) attached, sharing a
33060202365SMauro Carvalho Chehabcommon amount of RAM. Does a lot of checking to make sure that we are
33160202365SMauro Carvalho Chehabnot getting blocks mixed up, and panics the kernel if anything out of
33260202365SMauro Carvalho Chehabthe ordinary is seen.
33360202365SMauro Carvalho Chehab
33460202365SMauro Carvalho ChehabTo be more realistic, the simulated devices have the transport
33560202365SMauro Carvalho Chehabattributes of SAS disks.
33660202365SMauro Carvalho Chehab
33760202365SMauro Carvalho ChehabFor documentation see http://sg.danny.cz/sg/sdebug26.html
33860202365SMauro Carvalho Chehab
33960202365SMauro Carvalho Chehabtodo
34060202365SMauro Carvalho Chehab~~~~
34160202365SMauro Carvalho Chehab
34260202365SMauro Carvalho ChehabParallel (fast/wide/ultra) SCSI, USB, SATA, SAS, Fibre Channel,
343eaf2ea31SRandy DunlapFireWire, ATAPI devices, Infiniband, I2O, iSCSI, Parallel ports,
34460202365SMauro Carvalho Chehabnetlink...
345