summaryrefslogtreecommitdiff
path: root/extras/scsi_id/scsi_id.8
blob: ccb8f9d7446402e2e7406ed9f940620c54d1cae5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
.TH SCSI_ID 8 "December 2003" "" "Linux Administrator's Manual"
.SH NAME
scsi_id \- retrieve and generate a unique SCSI identifier
.SH SYNOPSIS
.BI scsi_id 
[\fIoptions\fP]
.SH "DESCRIPTION"
.B scsi_id
queries a SCSI device via the SCSI INQUIRY vital product data (VPD) page 0x80 or
0x83 and uses the resulting data to generate a value that is unique across
all SCSI devices that properly support page 0x80 or page 0x83. 

If a result is generated it is sent to standard output, and the program
exits with a zero value. If no identifier is output, the program exits
with a non\-zero value.

\fBscsi_id\fP is primarily for use by other utilities such as \fBudev\fP
that require a unique SCSI identifier.

By default all devices are assume black listed, the \fB\-g\fP option must
be specified on the command line or in the config file for any useful
behaviour.

SCSI commands are sent directly to the device via the SG_IO ioctl
interface.

In order to generate unique values for either page 0x80 or page 0x83, the
serial numbers or world wide names are prefixed as follows.

Identifiers based on page 0x80 are prefixed by the character 'S', the SCSI
vendor, the SCSI product (model) and then the the serial number returned
by page 0x80. For example:

.sp
.nf
# scsi_id -p 0x80 -s /block/sdg
SIBM     3542           1T05078453
.fi
.P

Identifiers based on page 0x83 are prefixed by the identifier type
followed by the page 0x83 identifier. For example, a device with a NAA
(Name Address Authority) type of 3 (also in this case the page 0x83
identifier starts with the NAA value of 6):

.sp
.nf
# /sbin/scsi_id -p 0x83 -s /block/sdg
3600a0b80000b174b000000d63efc5c8c
.fi
.P

.SH OPTIONS
.TP
.BI subsystem
Deprecated method: when called with only a single argument without a
leading \-, runs in a hotplug mode, and expects the environment variable
DEVPATH to specify the corresponding sysfs device. See section below on
usage with \fBudev\fP.
.TP
.BI \-a
Always print information (model, vendor strings) about the device even
if it does not support VPD pages.
.TP
.BI \-b
The default behaviour \- treat the device as black listed, and do nothing
unless a white listed device is found in the scsi_id config\-file.
.TP
.BI \-d "\| device\^"
Instead
of determining and creating a device node based on a sysfs dev
entry as done for the \fB\-s\fP, send SG_IO commands to 
\fBdevice\fP, such as \fB/dev/sdc\fP.
This argument should also be used when invoked via udev to avoid problems
with creation of temporary files on not-yet writable directories.
.TP
.BI \-f "\| config\-file"
Read configuration and black/white list entries from
.B config\-file 
rather than the default
.B /etc/scsi_id.config
file.
.TP
.BI \-g
Treat the device as white listed. The \fB\-g\fP option must be specified
on the command line or in the scsi_id configuration file for 
.B scsi_id
to generate any output.
.TP
.BI \-i
Prefix the identification string with the  driver model (sysfs) bus id of
the SCSI device.
.TP
.BI \-p "\| 0x80 | 0x83 | pre-spc3-83"
Use SCSI INQUIRY VPD page code 0x80, 0x83, or pre-spc3-83.
.sp
The default
behaviour is to query the availabe VPD pages, and use page 0x83 if found,
else page 0x80 if found, else nothing.
.sp
Page pre-spc3-83 should only be utilized for those scsi devices which
are not compliant with the SPC-2 or SPC-3 format for page 83.  While this
option is used for older model 4, 5, and 6 EMC Symmetrix devices, its
use with SPC-2 or SPC-3 compliant devices will fallback to the page 83
format supported by these devices.
.TP
.BI \-s "\| sysfs\-device"
Generate an id for the
.B sysfs\-device.
The sysfs mount point must not be included. For example, use /block/sd,
not /sys/block/sd.
.TP
.BI \-u
Reformat the output : replace all whitespaces by underscores.
.TP
.BI \-x
Export all data in KEY=<value> format used to import in other programs.
.TP
.BI \-v
Generate verbose debugging output.
.TP
.BI \-V
Display version number and exit.
.RE

.SH USAGE WITH UDEV 

If \fBscsi_id\fP is invoked with one argument without a leading \-, it
assumes it is called for a hotplug event, and looks for the sysfs device
in the DEVPATH environment variable. This mode is deprecated, but
available for backwards compatibility.

If the DEVPATH environment variable is set, scsi_id assumes it has been
invoked via udev (or some other hotplug program), and all errors or
warnings are sent using syslog.

To determine the specific value needed in a RESULT key, use the \-s option,
for example:

.sp
.nf
/sbin/scsi_id -s /block/sda
.fi
.P

\fBscsi_id\fP is one of the tools used in the "Linux Persistent Device Names"
scheme that creates persistent device links in /dev/disk. It is called with
the -x option which will print all values in a defined format to let udev
import it into its own environment for later event processing.
.sp
An example custom \fBudev\fP rule using \fBscsi_id\fP, that will name a block
device and any partitions for the device matching the \fBscsi_id\fP output
of 312345:

.sp
.nf
BUS=="scsi", PROGRAM=="/sbin/scsi_id -d %N -s %p", RESULT=="312345", NAME="disk%n"
.fi
.P

.SH "FILES"
.nf
.ft B
.ft
/etc/scsi_id.config                  configuration and black/white list entries
.fi
.LP
.SH "SEE ALSO"
.BR udev (7)
.SH AUTHORS
Developed by Patrick Mansfield <patmans@us.ibm.com> based on SCSI ID
source included in earlier linux 2.5 kernels, sg_utils source, and SCSI
specifications.