1130b656e5
This will make a number of things easier in the future, as well as (finally!) avoiding the Id-smashing problem which has plagued developers for so long. Boy, I'm glad we're not using sup anymore. This update would have been insane otherwise.
252 lines
8.1 KiB
Groff
252 lines
8.1 KiB
Groff
.\"
|
|
.\" Written By Julian ELischer
|
|
.\" Copyright julian Elischer 1993.
|
|
.\" Permission is granted to use or redistribute this file in any way as long
|
|
.\" as this notice remains. Julian Elischer does not guarantee that this file
|
|
.\" is totally correct for any given task and users of this file must
|
|
.\" accept responsibility for any damage that occurs from the application of this
|
|
.\" file.
|
|
.\"
|
|
.\" (julian@tfs.com julian@dialix.oz.au)
|
|
.\" User SCSI hooks added by Peter Dufault:
|
|
.\"
|
|
.\" Copyright (c) 1994 HD Associates
|
|
.\" (contact: dufault@hda.com)
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 3. The name of HD Associates
|
|
.\" may not be used to endorse or promote products derived from this software
|
|
.\" without specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY HD ASSOCIATES ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL HD ASSOCIATES BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\"
|
|
.\" $FreeBSD$
|
|
.\"
|
|
.Dd October 11, 1993
|
|
.Dt SCSI 8
|
|
.Os BSD 4
|
|
.Sh NAME
|
|
.Nm scsi
|
|
.Nd program to assist with scsi devices.
|
|
.Sh SYNOPSIS
|
|
.Bd -literal -offset
|
|
Usage:
|
|
scsi -f device -d debug_level # To set debug level
|
|
scsi -f device [-v] -z seconds # To freeze bus
|
|
scsi -f device -m page [-P pc] [-e] # To read mode pages
|
|
scsi -f device -p [-b bus] [-l lun] # To probe all devices
|
|
scsi -f device -r [-b bus] [-t targ] [-l lun] # To reprobe a device
|
|
scsi -f device [-v] [-s seconds] -c cmd_fmt [arg0 ... argn] # A command...
|
|
-o count out_fmt [arg0 ... argn] # EITHER (for data out)
|
|
-i count in_fmt # OR (for data in)
|
|
.Pp
|
|
"out_fmt" can be "-" to read output data from stdin;
|
|
"in_fmt" can be "-" to write input data to stdout;
|
|
.Pp
|
|
If debugging is not compiled in the kernel, "-d" will have no effect
|
|
.Ed
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Nm scsi
|
|
program is used to send commands to a scsi device. It is also
|
|
a sample usage of the user level SCSI commands.
|
|
.Pp
|
|
The
|
|
.Fr -d
|
|
option sets the SCSI kernel debug level. The kernel must have been compiled
|
|
with the
|
|
.Em SCSIDEBUG
|
|
option. See
|
|
.Fr /sys/scsi/scsi_debug.h
|
|
to figure out what to set the kernel debug level to.
|
|
.Pp
|
|
The
|
|
.Fr -z
|
|
option freezes all activity on all SCSI busses for a given number of
|
|
seconds. If
|
|
.Fr -v
|
|
is also specified then a BEL character is sent to the standard
|
|
output at the start and finish of the bus freeze.
|
|
This requires that the kernel be built with the SCSI_FREEZE kernel option.
|
|
This kernel code is not committed yet.
|
|
.Pp
|
|
The
|
|
.Fr -m
|
|
option is used to read a device mode page. The file
|
|
.Fr /usr/share/misc/scsi_modes
|
|
is read to look at for how to interpret the mode data. The environment
|
|
variable SCSI_MODES can specify a different file to use.
|
|
.Pp
|
|
.in +.25i
|
|
The
|
|
.Fr -P
|
|
option can be used to specify a page control field. The page control
|
|
fields are
|
|
.Bd -literal -offset
|
|
0 Current Values
|
|
1 Changeable Values
|
|
2 Default Values
|
|
3 Saved Values
|
|
.Ed
|
|
.Pp
|
|
The
|
|
.Fr -e
|
|
option permits you to edit the fields. It will use the editor specified
|
|
by your EDITOR environment variable. To store changes permanently,
|
|
edit page control 3 using the
|
|
.Fr -P
|
|
flag.
|
|
.in -.25i
|
|
.Pp
|
|
The
|
|
.Fr -p
|
|
option can be used against the "super scsi" device
|
|
.Fr /dev/scsi/super
|
|
to probe all devices with a given SCSI lun on a given SCSI bus.
|
|
The bus can be selected with the -b option and the default is 0.
|
|
The lun can be selected with the -l option and the default is 0.
|
|
See
|
|
.Xr scsi 4
|
|
for a description of the "super scsi" device.
|
|
.Pp
|
|
The
|
|
.Fr -r
|
|
option can be used in
|
|
.Tn FreeBSD
|
|
1.1 to reprobe a specific SCSI device at a given
|
|
Bus, Target and Lun.
|
|
This is not needed in
|
|
.Fx 2.1 ,
|
|
since opening a fixed SCSI device
|
|
has the side effect of reprobing it, and probing with the bus with the
|
|
-p option should bring on line any newly found devices.
|
|
See
|
|
.Xr scsi 4
|
|
for a description of fixed scsi devices.
|
|
.Pp
|
|
The
|
|
.Fr -c
|
|
option permits you to send user level SCSI commands specified on
|
|
the command line to a
|
|
device. The command is sent using the SCIOCCOMMAND ioctl, so the
|
|
device you are accessing must permit this ioctl. See
|
|
.Xr scsi 4
|
|
for full details of which minor devices permit the ioctl, and
|
|
.Xr scsi 3
|
|
for the full details on how to build up the commands and data phases
|
|
using the format arguments.
|
|
.in +.25i
|
|
.Pp
|
|
.Fr -v
|
|
turns on more verbose information.
|
|
.Pp
|
|
.Fr -s
|
|
sets the command timeout in seconds. The default is two seconds.
|
|
.Pp
|
|
.Fr "-c cmd_fmt"
|
|
specifies the command as described in
|
|
.Xr scsi 3 "."
|
|
The additional arguments provide values for any variables
|
|
specified in the command format.
|
|
.Pp
|
|
.Fr "-o count out_fmt arg0 ... argn"
|
|
indicates that this is a data out command (i.e., data will be sent from
|
|
the system to the device) with
|
|
.Fr count
|
|
bytes of data. The data out is built up using the facilities described in
|
|
.Xr scsi 3
|
|
using the provided arguments to fill in any integer variables.
|
|
.Fr out_fmt
|
|
can be specified as a hyphen ("-") to indicate that the
|
|
.Fr count
|
|
bytes of data should be read from the standard input.
|
|
.Pp
|
|
.Fr "-i count in_fmt"
|
|
indicates that this is a data in command (i.e., data will be read from
|
|
the device into the system) with
|
|
.Fr count
|
|
bytes of data read in. The information is extracted according to
|
|
.Fr in_fmt
|
|
using the facilities described in
|
|
.Xr scsi 3
|
|
and displayed on the standard output.
|
|
.Fr in_fmt
|
|
can be specified as a hyphen ("-") to indicate that the
|
|
.Fr count
|
|
bytes of data input should be written to the standard output.
|
|
.in -.25i
|
|
.Sh EXAMPLES
|
|
To verify that the device type for the disk /dev/rsd0c is 0
|
|
(direct access device):
|
|
.Bd -literal -offset
|
|
root# scsi -f /dev/rsd0c -c "12 0 0 0 64 0" -i 64 "*b3 b5"
|
|
0
|
|
.Ed
|
|
.Pp
|
|
To do an inquiry to /dev/rsd2c:
|
|
.Bd -literal -offset
|
|
root# scsi -f /dev/rsd2c -c "12 0 0 0 64 0" -i 64 "s8 z8 z16 z4"
|
|
FUJITSU M2654S-512 010P
|
|
.Pp
|
|
To edit mode page 1 on /dev/rsd2c, and store it permanently on the
|
|
drive:
|
|
.Bd -literal -offset
|
|
root# scsi -f /dev/rsd2c -m 1 -e -P 3
|
|
.Ed
|
|
.Pp
|
|
.Sh ENVIRONMENT
|
|
The SU_DEBUG_OUTPUT variable can be set to a file to send debugging
|
|
output to that file.
|
|
.Pp
|
|
The SU_DEBUG_LEVEL variable can be set to a non-zero integer to increase
|
|
the level of debugging. Currently this is a on or off thing; it should
|
|
perhaps use the ioctl to set the debug level in the kernel and then set
|
|
it back to zero at program exit.
|
|
.Pp
|
|
The SU_DEBUG_TRUNCATE variable can be set to an integer to limit the
|
|
amount of data phase output sent to the debugging file.
|
|
.Pp
|
|
The EDITOR variable determines the editor to use for the mode editor.
|
|
.Sh SEE ALSO
|
|
.Xr scsi 3 ,
|
|
.Xr scsi 4
|
|
.Sh BUGS
|
|
.Pp
|
|
This command wasn't ready for inclusion in 2.0R and so is missing in
|
|
that release.
|
|
.Pp
|
|
Some devices respond to an inquiry for all LUNS. This will cause them
|
|
to come on line to 8 times during reprobe to different logical units.
|
|
.Pp
|
|
The "-i" option to do an inquiry went away in 2.1. The new facilities
|
|
provided by "-c" supercede that.
|
|
.Pp
|
|
Check your permissions carefully.
|
|
"scsi -f /dev/rsd0c -c "4 0 0 0 0 0" permits anyone who can open
|
|
/dev/rsd0c to format the disk drive. This must be changed to
|
|
at least require write access to the drive.
|
|
.Sh HISTORY
|
|
The
|
|
.Nm scsi
|
|
command appeared in 386BSD 0.1.2.4/FreeBSD to support the new reprobe
|
|
and user SCSI commands.
|