415 lines
11 KiB
Groff
415 lines
11 KiB
Groff
|
.\" @(#)scgcheck.1 1.20 16/01/26 Copyright 2000-2016 J. Schilling
|
||
|
.\"
|
||
|
.\" The contents of this file are subject to the terms of the
|
||
|
.\" Common Development and Distribution License, Version 1.0 only
|
||
|
.\" (the "License"). You may not use this file except in compliance
|
||
|
.\" with the License.
|
||
|
.\"
|
||
|
.\" See the file CDDL.Schily.txt in this distribution for details.
|
||
|
.\" A copy of the CDDL is also available via the Internet at
|
||
|
.\" http://www.opensource.org/licenses/cddl1.txt
|
||
|
.\"
|
||
|
.\" When distributing Covered Code, include this CDDL HEADER in each
|
||
|
.\" file and include the License file CDDL.Schily.txt from this distribution.
|
||
|
.\"
|
||
|
.if t .ds a \v'-0.55m'\h'0.00n'\z.\h'0.40n'\z.\v'0.55m'\h'-0.40n'a
|
||
|
.if t .ds o \v'-0.55m'\h'0.00n'\z.\h'0.45n'\z.\v'0.55m'\h'-0.45n'o
|
||
|
.if t .ds u \v'-0.55m'\h'0.00n'\z.\h'0.40n'\z.\v'0.55m'\h'-0.40n'u
|
||
|
.if t .ds A \v'-0.77m'\h'0.25n'\z.\h'0.45n'\z.\v'0.77m'\h'-0.70n'A
|
||
|
.if t .ds O \v'-0.77m'\h'0.25n'\z.\h'0.45n'\z.\v'0.77m'\h'-0.70n'O
|
||
|
.if t .ds U \v'-0.77m'\h'0.30n'\z.\h'0.45n'\z.\v'0.77m'\h'-0.75n'U
|
||
|
.if t .ds s \\(*b
|
||
|
.if t .ds S SS
|
||
|
.if n .ds a ae
|
||
|
.if n .ds o oe
|
||
|
.if n .ds u ue
|
||
|
.if n .ds s sz
|
||
|
.TH SCGCHECK 1 "Version 3.0 2016/01/26" "J\*org Schilling" "Schily\'s USER COMMANDS"
|
||
|
.SH NAME
|
||
|
scgcheck \- check and validate the ABI of libscg
|
||
|
.SH SYNOPSIS
|
||
|
.B scgcheck
|
||
|
[
|
||
|
.I options
|
||
|
]
|
||
|
|
||
|
.SH DESCRIPTION
|
||
|
.B Scgcheck
|
||
|
is used to check and verify the Application Binary Interface of libscg.
|
||
|
|
||
|
.PP
|
||
|
.SS "Device naming"
|
||
|
Most users do not need to care about device naming at all, as
|
||
|
in
|
||
|
.B \-auto
|
||
|
mode,
|
||
|
.B scgcheck
|
||
|
implements
|
||
|
.B auto target
|
||
|
support and automagically finds a test drive in case that exactly
|
||
|
one CD-ROM type drive is available in the system.
|
||
|
|
||
|
.SH OPTIONS
|
||
|
.TP
|
||
|
.B \-version
|
||
|
Print version information and exit.
|
||
|
.TP
|
||
|
.B \-auto
|
||
|
Instead of asking to confirm each test before runing it,
|
||
|
.B scgcheck
|
||
|
tries to do a fully automated test.
|
||
|
.TP
|
||
|
.BI dev= target
|
||
|
Set the SCSI target for the device, see notes above.
|
||
|
A typical target device specification is
|
||
|
.BI dev= 1,6,0
|
||
|
\&.
|
||
|
If a filename must be provided together with the numerical target
|
||
|
specification, the filename is implementation specific.
|
||
|
The correct filename in this case can be found in the system specific
|
||
|
manuals of the target operating system.
|
||
|
On a
|
||
|
.I FreeBSD
|
||
|
system without
|
||
|
.I CAM
|
||
|
support, you need to use the control device (e.g.
|
||
|
.IR /dev/rcd0.ctl ).
|
||
|
A correct device specification in this case may be
|
||
|
.BI dev= /dev/rcd0.ctl:@
|
||
|
\&.
|
||
|
.sp
|
||
|
.B \h'-2m'General SCSI addressing
|
||
|
.br
|
||
|
The
|
||
|
.I target device
|
||
|
to the
|
||
|
.B dev=
|
||
|
option
|
||
|
refers to
|
||
|
.IR scsibus / target / lun
|
||
|
of the device. Communication on
|
||
|
.I SunOS
|
||
|
is done with the SCSI general driver
|
||
|
.B scg.
|
||
|
Other operating systems are using a library simulation of this driver.
|
||
|
Possible syntax is:
|
||
|
.B dev=
|
||
|
.IR scsibus , target , lun
|
||
|
or
|
||
|
.B dev=
|
||
|
.IR target , lun .
|
||
|
In the latter case, the device has to be connected to the default
|
||
|
SCSI bus of the machine.
|
||
|
.IR Scsibus ,
|
||
|
.I target
|
||
|
and
|
||
|
.I lun
|
||
|
are integer numbers.
|
||
|
Some operating systems or SCSI transport implementations may require to
|
||
|
specify a filename in addition.
|
||
|
In this case the correct syntax for the device is:
|
||
|
.B dev=
|
||
|
.IR devicename : scsibus , target , lun
|
||
|
or
|
||
|
.B dev=
|
||
|
.IR devicename : target , lun .
|
||
|
If the name of the device node that has been specified on such a system
|
||
|
refers to exactly one SCSI device, a shorthand in the form
|
||
|
.B dev=
|
||
|
.IR devicename : @
|
||
|
or
|
||
|
.B dev=
|
||
|
.IR devicename : @ , lun
|
||
|
may be used instead of
|
||
|
.B dev=
|
||
|
.IR devicename : scsibus , target , lun .
|
||
|
.sp
|
||
|
.B \h'-2m'Remote SCSI addressing
|
||
|
.br
|
||
|
To access remote SCSI devices, you need to prepend the SCSI device name by
|
||
|
a remote device indicator. The remote device indicator is either
|
||
|
.BI REMOTE: user@host:
|
||
|
or
|
||
|
.BI REMOTE: host:
|
||
|
A valid remote SCSI device name may be:
|
||
|
.BI REMOTE: user@host:
|
||
|
to allow remote SCSI bus scanning or
|
||
|
.BI REMOTE: user@host:1,0,0
|
||
|
to access the SCSI device at
|
||
|
.I host
|
||
|
connected to SCSI bus # 1,target 0, lun 0.
|
||
|
In order to allow remote access to a specific
|
||
|
.IR host ,
|
||
|
the
|
||
|
.BR rscsi (1)
|
||
|
program needs to be present and configured on the
|
||
|
.IR host .
|
||
|
.sp
|
||
|
.B \h'-2m'Alternate SCSI transports
|
||
|
.br
|
||
|
.B ATAPI
|
||
|
drives are just
|
||
|
.B SCSI
|
||
|
drives that inherently use the
|
||
|
.I "ATA packet interface
|
||
|
as
|
||
|
.B SCSI
|
||
|
command transport layer build into the IDE (ATA) transport.
|
||
|
You may need to specify an alternate transport layer on the command line
|
||
|
if your OS does not implement a fully integrated kernel driver subsystem that
|
||
|
allows to access any drive using
|
||
|
.B SCSI
|
||
|
commands via a single unique user interface.
|
||
|
.sp
|
||
|
To access SCSI devices via alternate transport layers,
|
||
|
you need to prepend the SCSI device name by a transport layer indicator.
|
||
|
The transport layer indicator may be something like
|
||
|
.B USCSI:
|
||
|
or
|
||
|
.BR ATAPI: .
|
||
|
To get a list of supported transport layers for your platform, use
|
||
|
.B dev=
|
||
|
.IR HELP :
|
||
|
.sp
|
||
|
.B \h'-2m'Portability Background
|
||
|
.br
|
||
|
To make
|
||
|
.B scgcheck
|
||
|
portable to all \s-2UNIX\s0 platforms, the syntax
|
||
|
.B dev=
|
||
|
.IR devicename : scsibus , target , lun
|
||
|
is preferred as it hides OS specific knowledge about device names from the user.
|
||
|
A specific OS may not necessarily support a way to specify a real device file name nor a
|
||
|
way to specify
|
||
|
.IR scsibus , target , lun .
|
||
|
.sp
|
||
|
.I Scsibus
|
||
|
0 is the default SCSI bus on the machine. Watch the boot messages for more
|
||
|
information or look into
|
||
|
.B /var/adm/messages
|
||
|
for more information about the SCSI configuration of your machine.
|
||
|
If you have problems to figure out what values for
|
||
|
.IR scsibus , target , lun
|
||
|
should be used, try the
|
||
|
.B \-scanbus
|
||
|
option of
|
||
|
.B scgcheck
|
||
|
described below.
|
||
|
.sp
|
||
|
.B \h'-2m'Autotarget Mode
|
||
|
.br
|
||
|
If no
|
||
|
.B dev=
|
||
|
option
|
||
|
is present, or if it
|
||
|
only contains a transport specifyer but no address notation,
|
||
|
.B scgcheck
|
||
|
tries to scan the SCSI address space for CD-ROM drives.
|
||
|
If exactly one is found, this is used by default.
|
||
|
.TP
|
||
|
.BI timeout= #
|
||
|
Set the default SCSI command timeout value to
|
||
|
.IR # " seconds.
|
||
|
The default SCSI command timeout is the minimum timeout used for sending
|
||
|
SCSI commands.
|
||
|
If a SCSI command fails due to a timeout, you may try to raise the
|
||
|
default SCSI command timeout above the timeout value of the failed command.
|
||
|
If the command runs correctly with a raised command timeout,
|
||
|
please report the better timeout value and the corresponding command to
|
||
|
the author of the program.
|
||
|
If no
|
||
|
.I timeout
|
||
|
option is present, a default timeout of 40 seconds is used.
|
||
|
.TP
|
||
|
.BI debug= "#, " \-d
|
||
|
Set the misc debug value to # (with debug=#) or increment
|
||
|
the misc debug level by one (with \-d). If you specify
|
||
|
.I \-dd,
|
||
|
this equals to
|
||
|
.BI debug= 2.
|
||
|
This may help to find problems while opening a driver for libscg.
|
||
|
as well as with sector sizes and sector types.
|
||
|
Using
|
||
|
.B \-debug
|
||
|
slows down the process and may be the reason for a buffer underrun.
|
||
|
.TP
|
||
|
.BR kdebug= "#, " kd= #
|
||
|
Tell the
|
||
|
.BR scg -driver
|
||
|
to modify the kernel debug value while SCSI commands are running.
|
||
|
.TP
|
||
|
.BI scgopts= list
|
||
|
A comma separated list of SCSI options that are handled by libscg.
|
||
|
The implemented options may be uptated indepentendly from applications.
|
||
|
Currently, one option:
|
||
|
.B ignore\-resid
|
||
|
is supported to work around a Linux kernel bug.
|
||
|
.TP
|
||
|
.BR \-silent ", " \-s
|
||
|
Do not print out a status report for failed SCSI commands.
|
||
|
.TP
|
||
|
.B \-v
|
||
|
Increment the level of general verbosity by one.
|
||
|
This is used e.g. to display the progress of the process.
|
||
|
.TP
|
||
|
.B \-V
|
||
|
Increment the verbose level with respect of SCSI command transport by one.
|
||
|
This helps to debug problems
|
||
|
during the process, that occur in the CD-Recorder.
|
||
|
If you get incomprehensible error messages you should use this flag
|
||
|
to get more detailed output.
|
||
|
.B \-VV
|
||
|
will show data buffer content in addition.
|
||
|
Using
|
||
|
.B \-V
|
||
|
or
|
||
|
.B \-VV
|
||
|
slows down the process.
|
||
|
.TP
|
||
|
.BI f= file
|
||
|
Specify the log file to be used instead of
|
||
|
.IR check.log .
|
||
|
|
||
|
.SH EXAMPLES
|
||
|
|
||
|
.SH FILES
|
||
|
.SH SEE ALSO
|
||
|
.BR cdrecord (1),
|
||
|
.BR readcd (1),
|
||
|
.BR mkisofs (1),
|
||
|
.BR scg (7).
|
||
|
|
||
|
.SH NOTES
|
||
|
.PP
|
||
|
When using
|
||
|
.B scgcheck
|
||
|
with the broken
|
||
|
.B "Linux SCSI generic driver."
|
||
|
You should note that
|
||
|
.B scgcheck
|
||
|
uses a hack, that tries to emulate the functionality of the scg driver.
|
||
|
Unfortunately, the sg driver on
|
||
|
.B Linux
|
||
|
has several severe bugs:
|
||
|
.TP
|
||
|
\(bu
|
||
|
It cannot see if a SCSI command could not be sent at all.
|
||
|
.TP
|
||
|
\(bu
|
||
|
It cannot get the SCSI status byte.
|
||
|
.B Scgcheck
|
||
|
for that reason cannot report failing SCSI commands in some
|
||
|
situations.
|
||
|
.TP
|
||
|
\(bu
|
||
|
It cannot get real DMA count of transfer.
|
||
|
.B Scgcheck
|
||
|
cannot tell you if there is an DMA residual count.
|
||
|
.TP
|
||
|
\(bu
|
||
|
It cannot get number of bytes valid in auto sense data.
|
||
|
.B Scgcheck
|
||
|
cannot tell you if device transfers no sense data at all.
|
||
|
.TP
|
||
|
\(bu
|
||
|
It fetches to few data in auto request sense (CCS/SCSI-2/SCSI-3 needs >= 18).
|
||
|
|
||
|
.SH DIAGNOSTICS
|
||
|
.PP
|
||
|
.PP
|
||
|
A typical error message for a SCSI command looks like:
|
||
|
.sp
|
||
|
.RS
|
||
|
.nf
|
||
|
scgcheck: I/O error. test unit ready: scsi sendcmd: no error
|
||
|
CDB: 00 20 00 00 00 00
|
||
|
status: 0x2 (CHECK CONDITION)
|
||
|
Sense Bytes: 70 00 05 00 00 00 00 0A 00 00 00 00 25 00 00 00 00 00
|
||
|
Sense Key: 0x5 Illegal Request, Segment 0
|
||
|
Sense Code: 0x25 Qual 0x00 (logical unit not supported) Fru 0x0
|
||
|
Sense flags: Blk 0 (not valid)
|
||
|
cmd finished after 0.002s timeout 40s
|
||
|
.fi
|
||
|
.sp
|
||
|
.RE
|
||
|
The first line gives information about the transport of the command.
|
||
|
The text after the first colon gives the error text for the system call
|
||
|
from the view of the kernel. It usually is:
|
||
|
.B "I/O error
|
||
|
unless other problems happen. The next words contain a short description for
|
||
|
the SCSI command that fails. The rest of the line tells you if there were
|
||
|
any problems for the transport of the command over the SCSI bus.
|
||
|
.B "fatal error
|
||
|
means that it was not possible to transport the command (i.e. no device present
|
||
|
at the requested SCSI address).
|
||
|
.PP
|
||
|
The second line prints the SCSI command descriptor block for the failed command.
|
||
|
.PP
|
||
|
The third line gives information on the SCSI status code returned by the
|
||
|
command, if the transport of the command succeeds.
|
||
|
This is error information from the SCSI device.
|
||
|
.PP
|
||
|
The fourth line is a hex dump of the auto request sense information for the
|
||
|
command.
|
||
|
.PP
|
||
|
The fifth line is the error text for the sense key if available, followed
|
||
|
by the segment number that is only valid if the command was a
|
||
|
.I copy
|
||
|
command. If the error message is not directly related to the current command,
|
||
|
the text
|
||
|
.I deferred error
|
||
|
is appended.
|
||
|
.PP
|
||
|
The sixth line is the error text for the sense code and the sense qualifier if available.
|
||
|
If the type of the device is known, the sense data is decoded from tables
|
||
|
in
|
||
|
.IR scsierrs.c " .
|
||
|
The text is followed by the error value for a field replaceable unit.
|
||
|
.PP
|
||
|
The seventh line prints the block number that is related to the failed command
|
||
|
and text for several error flags. The block number may not be valid.
|
||
|
.PP
|
||
|
The eight line reports the timeout set up for this command and the time
|
||
|
that the command realy needed to complete.
|
||
|
|
||
|
.SH BUGS
|
||
|
|
||
|
.SH CREDITS
|
||
|
|
||
|
.SH "MAILING LISTS
|
||
|
|
||
|
.SH AUTHOR
|
||
|
.nf
|
||
|
J\*org Schilling
|
||
|
Seestr. 110
|
||
|
D-13353 Berlin
|
||
|
Germany
|
||
|
.fi
|
||
|
.PP
|
||
|
Additional information can be found on:
|
||
|
.br
|
||
|
http://cdrecord.org/private/cdrecord.html
|
||
|
.PP
|
||
|
If you have support questions, send them to:
|
||
|
.PP
|
||
|
.B
|
||
|
cdrtools-support@lists.sourceforge.net
|
||
|
.PP
|
||
|
If you have definitely found a bug, send a mail to:
|
||
|
.PP
|
||
|
.B
|
||
|
cdrtools-developers@lists.sourceforge.net
|
||
|
.br
|
||
|
or
|
||
|
.B
|
||
|
joerg.schilling@fokus.fraunhofer.de
|
||
|
.PP
|
||
|
To subscribe, use:
|
||
|
.PP
|
||
|
.B
|
||
|
https://lists.sourceforge.net/lists/listinfo/cdrtools-developers
|
||
|
.br
|
||
|
or
|
||
|
.B
|
||
|
https://lists.sourceforge.net/lists/listinfo/cdrtools-support
|