1CCISS(4) Kernel Interfaces Manual CCISS(4)
2
3
4
6 cciss - HP Smart Array block driver
7
9 modprobe cciss [ cciss_allow_hpsa=1 ]
10
12 cciss is a block driver for older HP Smart Array RAID controllers.
13
15 cciss_allow_hpsa=1 This option prevents the cciss driver from attempt‐
16 ing to drive any controllers which the hpsa driver is capable of
17 controlling, which is to say, the cciss driver is restricted by
18 this option to the following controllers:
19
20 Smart Array 5300
21 Smart Array 5i
22 Smart Array 532
23 Smart Array 5312
24 Smart Array 641
25 Smart Array 642
26 Smart Array 6400
27 Smart Array 6400 EM
28 Smart Array 6i
29 Smart Array P600
30 Smart Array P400i
31 Smart Array E200i
32 Smart Array E200
33 Smart Array E200i
34 Smart Array E200i
35 Smart Array E200i
36 Smart Array E500
37
38
39
41 The cciss driver supports the following Smart Array boards:
42
43 Smart Array 5300
44 Smart Array 5i
45 Smart Array 532
46 Smart Array 5312
47 Smart Array 641
48 Smart Array 642
49 Smart Array 6400
50 Smart Array 6400 U320 Expansion Module
51 Smart Array 6i
52 Smart Array P600
53 Smart Array P800
54 Smart Array E400
55 Smart Array P400i
56 Smart Array E200
57 Smart Array E200i
58 Smart Array E500
59 Smart Array P700m
60 Smart Array P212
61 Smart Array P410
62 Smart Array P410i
63 Smart Array P411
64 Smart Array P812
65 Smart Array P712m
66 Smart Array P711m
67
69 To configure HP Smart Array controllers, use the HP Array Configuration
70 Utiltiy (either hpacuxe or hpacucli) or the Offline ROM-based Configu‐
71 ration Utility (ORCA) run from the Smart Array's option ROM at boot
72 time.
73
75 DEVICE NODES
76 The device naming scheme is as follows:
77 Major numbers:
78 104 cciss0
79 105 cciss1
80 106 cciss2
81 105 cciss3
82 108 cciss4
83 109 cciss5
84 110 cciss6
85 111 cciss7
86
87 Minor numbers:
88 b7 b6 b5 b4 b3 b2 b1 b0
89 |----+----| |----+----|
90 | |
91 | +-------- Partition ID (0=wholedev, 1-15 partition)
92 |
93 +-------------------- Logical Volume number
94
95 The device naming scheme is:
96 /dev/cciss/c0d0 Controller 0, disk 0, whole device
97 /dev/cciss/c0d0p1 Controller 0, disk 0, partition 1
98 /dev/cciss/c0d0p2 Controller 0, disk 0, partition 2
99 /dev/cciss/c0d0p3 Controller 0, disk 0, partition 3
100
101 /dev/cciss/c1d1 Controller 1, disk 1, whole device
102 /dev/cciss/c1d1p1 Controller 1, disk 1, partition 1
103 /dev/cciss/c1d1p2 Controller 1, disk 1, partition 2
104 /dev/cciss/c1d1p3 Controller 1, disk 1, partition 3
105
106
107 FILES IN /proc
108 The files /proc/driver/cciss/cciss[0-9]+ contain information about the
109 configuration of each controller. For example:
110
111 someone@somehost:/proc/driver/cciss> ls -l
112 total 0
113 -rw-r--r-- 1 root root 0 2010-09-10 10:38 cciss0
114 -rw-r--r-- 1 root root 0 2010-09-10 10:38 cciss1
115 -rw-r--r-- 1 root root 0 2010-09-10 10:38 cciss2
116 someone@somehost:/proc/driver/cciss> cat cciss2
117 cciss2: HP Smart Array P800 Controller
118 Board ID: 0x3223103c
119 Firmware Version: 7.14
120 IRQ: 16
121 Logical drives: 1
122 Current Q depth: 0
123 Current # commands on controller: 0
124 Max Q depth since init: 1
125 Max # commands on controller since init: 2
126 Max SG entries since init: 32
127 Sequential access devices: 0
128
129 cciss/c2d0: 36.38GB RAID 0
130 someone@somehost:/proc/driver/cciss>
131
132
133 FILES IN /sys
134 /sys/bus/pci/devices/<dev>/ccissX/cXdY/model
135
136 Displays the SCSI INQUIRY page 0 model for logical drive Y of
137 controller X.
138
139
140 /sys/bus/pci/devices/<dev>/ccissX/cXdY/rev
141
142 Displays the SCSI INQUIRY page 0 revision for logical drive Y of
143 controller X.
144
145
146 /sys/bus/pci/devices/<dev>/ccissX/cXdY/unique_id
147
148 Displays the SCSI INQUIRY page 83 serial number for logical
149 drive Y of controller X.
150
151
152 /sys/bus/pci/devices/<dev>/ccissX/cXdY/vendor
153
154 Displays the SCSI INQUIRY page 0 vendor for logical drive Y of
155 controller X.
156
157
158 /sys/bus/pci/devices/<dev>/ccissX/cXdY/block:cciss!cXdY
159
160 A symbolic link to /sys/block/cciss!cXdY
161
162
163 /sys/bus/pci/devices/<dev>/ccissX/rescan
164
165 Kicks off a rescan of the controller to discover logical drive
166 topology changes.
167
168
169 /sys/bus/pci/devices/<dev>/ccissX/cXdY/lunid
170
171 Displays the 8-byte LUN ID used to address logical drive Y of
172 controller X.
173
174
175 /sys/bus/pci/devices/<dev>/ccissX/cXdY/raid_level
176
177 Displays the RAID level of logical drive Y of controller X.
178
179
180 /sys/bus/pci/devices/<dev>/ccissX/cXdY/usage_count
181
182 Displays the usage count (number of opens) of logical drive Y of
183 controller X.
184
185
187 SCSI sequential access devices and medium changer devices are supported
188 and appropriate device nodes are automatically created. (e.g.
189 /dev/st0, /dev/st1, etc. See the "st" man page for more details.) You
190 must enable "SCSI tape drive support for Smart Array 5xxx" and "SCSI
191 support" in your kernel configuration to be able to use SCSI tape
192 drives with your Smart Array 5xxx controller.
193
194 Additionally, note that the driver will not engage the SCSI core at
195 init time. The driver must be directed to dynamically engage the SCSI
196 core via the /proc filesystem entry which the "block" side of the
197 driver creates as /proc/driver/cciss/cciss* at runtime. This is
198 because at driver init time, the SCSI core may not yet be initialized
199 (because the driver is a block driver) and attempting to register it
200 with the SCSI core in such a case would cause a hang. This is best
201 done via an initialization script (typically in /etc/init.d, but could
202 vary depending on distribution). For example:
203
204 for x in /proc/driver/cciss/cciss[0-9]*
205 do
206 echo "engage scsi" > $x
207 done
208
209 Once the SCSI core is engaged by the driver, it cannot be disengaged
210 (except by unloading the driver, if it happens to be linked as a mod‐
211 ule.)
212
213 Note also that if no sequential access devices or medium changers are
214 detected, the SCSI core will not be engaged by the action of the above
215 script.
216
217
218 Hot plug support for SCSI tape drives
219 Hot plugging of SCSI tape drives is supported, with some caveats. The
220 cciss driver must be informed that changes to the SCSI bus have been
221 made. This may be done via the /proc filesystem. For example:
222
223 echo "rescan" > /proc/scsi/cciss0/1
224
225 This causes the driver to query the adapter about changes to the physi‐
226 cal SCSI buses and/or fibre channel arbitrated loop and the driver to
227 make note of any new or removed sequential access devices or medium
228 changers. The driver will output messages indicating what devices have
229 been added or removed and the controller, bus, target and lun used to
230 address the device. It then notifies the SCSI mid layer of these
231 changes.
232
233 Note that the naming convention of the /proc filesystem entries con‐
234 tains a number in addition to the driver name. (E.g. "cciss0" instead
235 of just "cciss" which you might expect.)
236
237 Note: ONLY sequential access devices and medium changers are presented
238 as SCSI devices to the SCSI mid layer by the cciss driver. Specifi‐
239 cally, physical SCSI disk drives are NOT presented to the SCSI mid
240 layer. The physical SCSI disk drives are controlled directly by the
241 array controller hardware and it is important to prevent the kernel
242 from attempting to directly access these devices too, as if the array
243 controller were merely a SCSI controller in the same way that we are
244 allowing it to access SCSI tape drives.
245
246
247 SCSI error handling for tape drives and medium changers
248 The linux SCSI mid layer provides an error handling protocol which
249 kicks into gear whenever a SCSI command fails to complete within a cer‐
250 tain amount of time (which can vary depending on the command). The
251 cciss driver participates in this protocol to some extent. The normal
252 protocol is a four step process. First the device is told to abort the
253 command. If that doesn't work, the device is reset. If that doesn't
254 work, the SCSI bus is reset. If that doesn't work the host bus adapter
255 is reset. Because the cciss driver is a block driver as well as a SCSI
256 driver and only the tape drives and medium changers are presented to
257 the SCSI mid layer, and unlike more straightforward SCSI drivers, disk
258 i/o continues through the block side during the SCSI error recovery
259 process, the cciss driver only implements the first two of these
260 actions, aborting the command, and resetting the device. Additionally,
261 most tape drives will not oblige in aborting commands, and sometimes it
262 appears they will not even obey a reset command, though in most circum‐
263 stances they will. In the case that the command cannot be aborted and
264 the device cannot be reset, the device will be set offline.
265
266 In the event the error handling code is triggered and a tape drive is
267 successfully reset or the tardy command is successfully aborted, the
268 tape drive may still not allow i/o to continue until some command is
269 issued which positions the tape to a known position. Typically you
270 must rewind the tape (by issuing "mt -f /dev/st0 rewind" for example)
271 before i/o can proceed again to a tape drive which was reset.
272
273
275 hpsa(4), hpacucli(8), hpacuxe(8), cciss_vol_status(8),
276 http://cciss.sf.net, and from the linux kernel source, Documenta‐
277 tion/blockdev/cciss.txt and Documentation/ABI/testing/sysfs-bus-pci-
278 devices-cciss
279
281 Don Brace, Steve Cameron, Chase Maupin, Mike Miller, Michael Ni,
282 Charles White, Francis Wiran and probably some other people.
283
284
285
286
287
288 cciss CCISS(4)