0ea6e61122
Below you will find an updated version from the original series bunching all patches into one big patch updating broken web addresses that are located in Documentation/* Some of the addresses date as far far back as 1995 etc... so searching became a bit difficult, the best way to deal with these is to use web.archive.org to locate these addresses that are outdated. Now there are also some addresses pointing to .spec files some are located, but some(after searching on the companies site)where still no where to be found. In this case I just changed the address to the company site this way the users can contact the company and they can locate them for the users. Signed-off-by: Justin P. Mattock <justinmattock@gmail.com> Signed-off-by: Thomas Weber <weber@corscience.de> Signed-off-by: Mike Frysinger <vapier.adi@gmail.com> Cc: Paulo Marques <pmarques@grupopie.com> Cc: Randy Dunlap <rdunlap@xenotime.net> Cc: Michael Neuling <mikey@neuling.org> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
102 lines
4.1 KiB
Plaintext
102 lines
4.1 KiB
Plaintext
Notes on Linux SCSI Generic (sg) driver
|
|
---------------------------------------
|
|
20020126
|
|
Introduction
|
|
============
|
|
The SCSI Generic driver (sg) is one of the four "high level" SCSI device
|
|
drivers along with sd, st and sr (disk, tape and CDROM respectively). Sg
|
|
is more generalized (but lower level) than its siblings and tends to be
|
|
used on SCSI devices that don't fit into the already serviced categories.
|
|
Thus sg is used for scanners, CD writers and reading audio CDs digitally
|
|
amongst other things.
|
|
|
|
Rather than document the driver's interface here, version information
|
|
is provided plus pointers (i.e. URLs) where to find documentation
|
|
and examples.
|
|
|
|
|
|
Major versions of the sg driver
|
|
===============================
|
|
There are three major versions of sg found in the linux kernel (lk):
|
|
- sg version 1 (original) from 1992 to early 1999 (lk 2.2.5) .
|
|
It is based in the sg_header interface structure.
|
|
- sg version 2 from lk 2.2.6 in the 2.2 series. It is based on
|
|
an extended version of the sg_header interface structure.
|
|
- sg version 3 found in the lk 2.4 series (and the lk 2.5 series).
|
|
It adds the sg_io_hdr interface structure.
|
|
|
|
|
|
Sg driver documentation
|
|
=======================
|
|
The most recent documentation of the sg driver is kept at the Linux
|
|
Documentation Project's (LDP) site:
|
|
http://www.tldp.org/HOWTO/SCSI-Generic-HOWTO
|
|
This describes the sg version 3 driver found in the lk 2.4 series.
|
|
The LDP renders documents in single and multiple page HTML, postscript
|
|
and pdf. This document can also be found at:
|
|
http://sg.danny.cz/sg/p/sg_v3_ho.html
|
|
|
|
Documentation for the version 2 sg driver found in the lk 2.2 series can
|
|
be found at http://sg.danny.cz/sg/. A larger version
|
|
is at: http://sg.danny.cz/sg/p/scsi-generic_long.txt.
|
|
|
|
The original documentation for the sg driver (prior to lk 2.2.6) can be
|
|
found at http://www.torque.net/sg/p/original/SCSI-Programming-HOWTO.txt
|
|
and in the LDP archives.
|
|
|
|
A changelog with brief notes can be found in the
|
|
/usr/src/linux/include/scsi/sg.h file. Note that the glibc maintainers copy
|
|
and edit this file (removing its changelog for example) before placing it
|
|
in /usr/include/scsi/sg.h . Driver debugging information and other notes
|
|
can be found at the top of the /usr/src/linux/drivers/scsi/sg.c file.
|
|
|
|
A more general description of the Linux SCSI subsystem of which sg is a
|
|
part can be found at http://www.tldp.org/HOWTO/SCSI-2.4-HOWTO .
|
|
|
|
|
|
Example code and utilities
|
|
==========================
|
|
There are two packages of sg utilities:
|
|
- sg3_utils for the sg version 3 driver found in lk 2.4
|
|
- sg_utils for the sg version 2 (and original) driver found in lk 2.2
|
|
and earlier
|
|
Both packages will work in the lk 2.4 series however sg3_utils offers more
|
|
capabilities. They can be found at: http://sg.danny.cz/sg/sg3_utils.html and
|
|
freshmeat.net
|
|
|
|
Another approach is to look at the applications that use the sg driver.
|
|
These include cdrecord, cdparanoia, SANE and cdrdao.
|
|
|
|
|
|
Mapping of Linux kernel versions to sg driver versions
|
|
======================================================
|
|
Here is a list of linux kernels in the 2.4 series that had new version
|
|
of the sg driver:
|
|
lk 2.4.0 : sg version 3.1.17
|
|
lk 2.4.7 : sg version 3.1.19
|
|
lk 2.4.10 : sg version 3.1.20 **
|
|
lk 2.4.17 : sg version 3.1.22
|
|
|
|
** There were 3 changes to sg version 3.1.20 by third parties in the
|
|
next six linux kernel versions.
|
|
|
|
For reference here is a list of linux kernels in the 2.2 series that had
|
|
new version of the sg driver:
|
|
lk 2.2.0 : original sg version [with no version number]
|
|
lk 2.2.6 : sg version 2.1.31
|
|
lk 2.2.8 : sg version 2.1.32
|
|
lk 2.2.10 : sg version 2.1.34 [SG_GET_VERSION_NUM ioctl first appeared]
|
|
lk 2.2.14 : sg version 2.1.36
|
|
lk 2.2.16 : sg version 2.1.38
|
|
lk 2.2.17 : sg version 2.1.39
|
|
lk 2.2.20 : sg version 2.1.40
|
|
|
|
The lk 2.5 development series has recently commenced and it currently
|
|
contains sg version 3.5.23 which is functionally equivalent to sg
|
|
version 3.1.22 found in lk 2.4.17 .
|
|
|
|
|
|
Douglas Gilbert
|
|
26th January 2002
|
|
dgilbert@interlog.com
|