aboutsummaryrefslogtreecommitdiff
path: root/sg_map26.8
blob: 8ef5c405951bda31814eaaf24bbe358d71061dad (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
.TH SG_MAP26 "8" "June 2006" "sg3_utils-1.21" SG3_UTILS
.SH NAME
sg_map26 \- maps a special file to a SCSI generic (sg) device (or vv)
.SH SYNOPSIS
.B sg_map26
[\fI--dev_dir=<dir>\fR] [\fI--given_is=<n>\fR] [\fI--help\fR]
[\fI--result=<n>\fR] [\fI--symlink\fR] [\fI--verbose\fR] [\fI--version\fR]
\fI<device>\fR
.SH DESCRIPTION
.\" Add any additional description here
.PP
Maps a special file (block or char) associated with a SCSI device
to the corresponding SCSI generic (sg) device, or vice versa.
Can also be given a sysfs file, for example '/sys/block/sda'
or '/sys/block/sda/dev'.
.PP
Rather than map to or from a sg device, the sysfs file name
matching a given device special file (or vice versa) can be
requested. This is done with '--result=2' and '--result=3'.
This feature works on ATA devices (e.g. 'dev/hdc') as well
as SCSI devices.
.PP
In this utility, "mapped" refers to finding the relationship between
a SCSI generic (sg) node and the higher level SCSI device name; or
vice versa. For example '/dev/sg0' may "map" to '/dev/sda'.
Mappings may not exist, if a relevant module is not loaded, for
example. Also there are SCSI devices that can only be accessed via a sg
node (e.g. SAF-TE and some SES devices). 
.PP
In this utility, "matching" refers to different representations of
the same device accessed via the same driver. For example, '/dev/hdc'
and '/sys/block/hdc' usually refer to the same device and thus would
be considered matching. A related example is that '/dev/cdrom'
and '/dev/hdc' are also considered matching if '/dev/cdrom' is a
symlink to '/dev/hdc'.
.TP
--dev_dir=<dir> | -d <dir>
The <dir> argument is the directory to search for resultant device
special files in (or symlinks to same). Only active
when '--result=0' (the default) or '--result=2'. If this option is not
given and <device> is a device special file then the directory part
of <device> is assumed. If this option is not given and <device> is a
sysfs name, then if necessary '/dev' is assumed as the directory.
.TP
--given_is=0|1 | -g 0|1
specifies the given <device> is either a device special file (when the
argument is 0), or a sysfs 'dev' file (when the argument is 1). The parent
directory of a sysfs 'dev' file is also accepted (e.g.
either '/sys/block/sda/dev' or '/sys/block/sda' are accepted). Usually
there is no need to give this option since this utility first checks for
special files (or symlinks to special files) and if not, assumes it
has been given a sysfs 'dev' file (or its parent). Generates an error
if given and disagrees with variety of <device>.
.TP
--help | -h
output the usage message then exit.
.TP
--result=0|1|2|3 | -r 0|1|2|3
specifies what variety of file (or files) that this utility tries to find.
The default is a "mapped" device special file, when the argument is 0.
When the argument is 1, this utility tries to find the "mapped" sysfs node
name. When the argument is 2, this utility tries to find the "matching"
device special file. When the argument is 3, this utility tries to find
the "matching" sysfs node name.
.TP
--symlink | -s
when a device special file is being sought (i.e. when '--result=0' (the
default) or '--result=2') then also look for symlinks to that device
special file in the same directory.
.TP
--verbose | -v
increase the level of verbosity, (i.e. debug output).
.TP
--version | -V
print the version string and then exit.
.PP
This utility is designed for the linux 2.6 kernel series. It uses
special file major and minor numbers (and whether the special is
block or character) together with sysfs to do its mapping or
matching. In the absence of any other information, device special
files are assumed to be in the '/dev' directory while sysfs is
assumed to be mounted at '/sys'. Device names in sysfs are
predictable, given the corresponding major and minor number of
the device. However, due to udev rules, the name of device
special files can be anything the user desires (e.g. '/dev/sda'
could be named '/dev/my_boot_disk'). When trying to
find a resultant device special file, this utility uses the major
and minor numbers (and whether a block or char device is sought)
to search the device directory. 
.PP
This utility only shows one relationship at a time. To get an
overview of all SCSI devices, with special file names and optionally
the "mapped" sg device name, see the lsscsi utility.
.SH EXAMPLES
Assume sg2 maps to sdb while dvd, cdrom and hdc are all matching.
.PP
  # sg_map26 /dev/sg2
.br
  /dev/sdb
.PP
  # sg_map26 /dev/sdb
.br
  /dev/sg2
.PP
  # sg_map26 --result=0 /dev/sdb
.br
  /dev/sg2
.PP
  # sg_map26 --result=3 /dev/sdb
.br
  /sys/block/sda
.PP
  # sg_map26 --result=1 /dev/sdb
.br
  /sys/class/scsi_generic/sg0
.PP
Now look at '/dev/hdc' and friends
.PP
  # sg_map26 /dev/hdc
.br
  <error: a hd device does not map to a sg device>
.PP
  # sg_map26 --result=3 /dev/hdc
.br
  /sys/block/hdc
.PP
  # sg_map26 --result=2 /dev/hdc
.br
  /dev/hdc
.PP
  # sg_map26 --result=2 --symlink /dev/hdc
.br
  /dev/cdrom
.br
  /dev/dvd
.br
  /dev/hdc
.PP
  # sg_map26 --result=2 --symlink /sys/block/hdc
.br
  /dev/cdrom
.br
  /dev/dvd
.br
  /dev/hdc
.SH EXIT STATUS
The exit status of sg_map26 is 0 when it is successful. Otherwise see
the sg3_utils(8) man page.
.SH AUTHORS
Written by Douglas Gilbert.
.SH "REPORTING BUGS"
Report bugs to <dgilbert at interlog dot com>.
.SH COPYRIGHT
Copyright \(co 2005-2006 Douglas Gilbert
.br
This software is distributed under a FreeBSD license. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
.SH "SEE ALSO"
.B udev(8), udevinfo(8), lsscsi(lsscsi)