1CCISS(4) Linux Programmer's 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
14 Options
15 cciss_allow_hpsa=1: This option prevents the cciss driver from attempt‐
16 ing to drive any controllers that the hpsa(4) driver is capable of con‐
17 trolling, which is to say, the cciss driver is restricted by this
18 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 Supported hardware
39 The cciss driver supports the following Smart Array boards:
40
41 Smart Array 5300
42 Smart Array 5i
43 Smart Array 532
44 Smart Array 5312
45 Smart Array 641
46 Smart Array 642
47 Smart Array 6400
48 Smart Array 6400 U320 Expansion Module
49 Smart Array 6i
50 Smart Array P600
51 Smart Array P800
52 Smart Array E400
53 Smart Array P400i
54 Smart Array E200
55 Smart Array E200i
56 Smart Array E500
57 Smart Array P700m
58 Smart Array P212
59 Smart Array P410
60 Smart Array P410i
61 Smart Array P411
62 Smart Array P812
63 Smart Array P712m
64 Smart Array P711m
65
66 Configuration details
67 To configure HP Smart Array controllers, use the HP Array Configuration
68 Utility (either hpacuxe(8) or hpacucli(8)) or the Offline ROM-based
69 Configuration Utility (ORCA) run from the Smart Array's option ROM at
70 boot time.
71
73 Device nodes
74 The device naming scheme is as follows:
75
76 Major numbers:
77
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
89 b7 b6 b5 b4 b3 b2 b1 b0
90 |----+----| |----+----|
91 | |
92 | +-------- Partition ID (0=wholedev, 1-15 partition)
93 |
94 +-------------------- Logical Volume number
95
96 The device naming scheme is:
97
98 /dev/cciss/c0d0 Controller 0, disk 0, whole device
99 /dev/cciss/c0d0p1 Controller 0, disk 0, partition 1
100 /dev/cciss/c0d0p2 Controller 0, disk 0, partition 2
101 /dev/cciss/c0d0p3 Controller 0, disk 0, partition 3
102
103 /dev/cciss/c1d1 Controller 1, disk 1, whole device
104 /dev/cciss/c1d1p1 Controller 1, disk 1, partition 1
105 /dev/cciss/c1d1p2 Controller 1, disk 1, partition 2
106 /dev/cciss/c1d1p3 Controller 1, disk 1, partition 3
107
108 Files in /proc
109 The files /proc/driver/cciss/cciss[0-9]+ contain information about the
110 configuration of each controller. For example:
111
112 $ cd /proc/driver/cciss
113 $ ls -l
114 total 0
115 -rw-r--r-- 1 root root 0 2010-09-10 10:38 cciss0
116 -rw-r--r-- 1 root root 0 2010-09-10 10:38 cciss1
117 -rw-r--r-- 1 root root 0 2010-09-10 10:38 cciss2
118 $ cat cciss2
119 cciss2: HP Smart Array P800 Controller
120 Board ID: 0x3223103c
121 Firmware Version: 7.14
122 IRQ: 16
123 Logical drives: 1
124 Current Q depth: 0
125 Current # commands on controller: 0
126 Max Q depth since init: 1
127 Max # commands on controller since init: 2
128 Max SG entries since init: 32
129 Sequential access devices: 0
130
131 cciss/c2d0: 36.38GB RAID 0
132
133 Files in /sys
134 /sys/bus/pci/devices/<dev>/ccissX/cXdY/model
135 Displays the SCSI INQUIRY page 0 model for logical drive Y of
136 controller X.
137
138 /sys/bus/pci/devices/<dev>/ccissX/cXdY/rev
139 Displays the SCSI INQUIRY page 0 revision for logical drive Y of
140 controller X.
141
142 /sys/bus/pci/devices/<dev>/ccissX/cXdY/unique_id
143 Displays the SCSI INQUIRY page 83 serial number for logical
144 drive Y of controller X.
145
146 /sys/bus/pci/devices/<dev>/ccissX/cXdY/vendor
147 Displays the SCSI INQUIRY page 0 vendor for logical drive Y of
148 controller X.
149
150 /sys/bus/pci/devices/<dev>/ccissX/cXdY/block:cciss!cXdY
151 A symbolic link to /sys/block/cciss!cXdY.
152
153 /sys/bus/pci/devices/<dev>/ccissX/rescan
154 When this file is written to, the driver rescans the controller
155 to discover any new, removed, or modified logical drives.
156
157 /sys/bus/pci/devices/<dev>/ccissX/resettable
158 A value of 1 displayed in this file indicates that the
159 "reset_devices=1" kernel parameter (used by kdump) is honored by
160 this controller. A value of 0 indicates that the
161 "reset_devices=1" kernel parameter will not be honored. Some
162 models of Smart Array are not able to honor this parameter.
163
164 /sys/bus/pci/devices/<dev>/ccissX/cXdY/lunid
165 Displays the 8-byte LUN ID used to address logical drive Y of
166 controller X.
167
168 /sys/bus/pci/devices/<dev>/ccissX/cXdY/raid_level
169 Displays the RAID level of logical drive Y of controller X.
170
171 /sys/bus/pci/devices/<dev>/ccissX/cXdY/usage_count
172 Displays the usage count (number of opens) of logical drive Y of
173 controller X.
174
175 SCSI tape drive and medium changer support
176 SCSI sequential access devices and medium changer devices are supported
177 and appropriate device nodes are automatically created (e.g., /dev/st0,
178 /dev/st1, etc.; see st(4) for more details.) You must enable "SCSI
179 tape drive support for Smart Array 5xxx" and "SCSI support" in your
180 kernel configuration to be able to use SCSI tape drives with your Smart
181 Array 5xxx controller.
182
183 Additionally, note that the driver will not engage the SCSI core at
184 init time. The driver must be directed to dynamically engage the SCSI
185 core via the /proc file-system entry, which the "block" side of the
186 driver creates as /proc/driver/cciss/cciss* at run time. This is
187 because at driver init time, the SCSI core may not yet be initialized
188 (because the driver is a block driver) and attempting to register it
189 with the SCSI core in such a case would cause a hang. This is best
190 done via an initialization script (typically in /etc/init.d, but could
191 vary depending on distribution). For example:
192
193 for x in /proc/driver/cciss/cciss[0-9]*
194 do
195 echo "engage scsi" > $x
196 done
197
198 Once the SCSI core is engaged by the driver, it cannot be disengaged
199 (except by unloading the driver, if it happens to be linked as a mod‐
200 ule.)
201
202 Note also that if no sequential access devices or medium changers are
203 detected, the SCSI core will not be engaged by the action of the above
204 script.
205
206 Hot plug support for SCSI tape drives
207 Hot plugging of SCSI tape drives is supported, with some caveats. The
208 cciss driver must be informed that changes to the SCSI bus have been
209 made. This may be done via the /proc file system. For example:
210
211 echo "rescan" > /proc/scsi/cciss0/1
212
213 This causes the driver to:
214
215 1. query the adapter about changes to the physical SCSI buses
216 and/or fibre channel arbitrated loop, and
217
218 2. make note of any new or removed sequential access devices or
219 medium changers.
220
221 The driver will output messages indicating which devices have been
222 added or removed and the controller, bus, target and lun used to
223 address each device. The driver then notifies the SCSI midlayer of
224 these changes.
225
226 Note that the naming convention of the /proc file-system entries con‐
227 tains a number in addition to the driver name (e.g., "cciss0" instead
228 of just "cciss", which you might expect).
229
230 Note: Only sequential access devices and medium changers are presented
231 as SCSI devices to the SCSI midlayer by the cciss driver. Specifi‐
232 cally, physical SCSI disk drives are not presented to the SCSI mid‐
233 layer. The only disk devices that are presented to the kernel are log‐
234 ical drives that the array controller constructs from regions on the
235 physical drives. The logical drives are presented to the block layer
236 (not to the SCSI midlayer). It is important for the driver to prevent
237 the kernel from accessing the physical drives directly, since these
238 drives are used by the array controller to construct the logical
239 drives.
240
241 SCSI error handling for tape drives and medium changers
242 The Linux SCSI midlayer provides an error-handling protocol that is
243 initiated whenever a SCSI command fails to complete within a certain
244 amount of time (which can vary depending on the command). The cciss
245 driver participates in this protocol to some extent. The normal proto‐
246 col is a four-step process:
247
248 * First, the device is told to abort the command.
249
250 * If that doesn't work, the device is reset.
251
252 * If that doesn't work, the SCSI bus is reset.
253
254 * If that doesn't work the host bus adapter is reset.
255
256 The cciss driver is a block driver as well as a SCSI driver and only
257 the tape drives and medium changers are presented to the SCSI midlayer
258 Furthermore, unlike more straightforward SCSI drivers, disk I/O contin‐
259 ues through the block side during the SCSI error-recovery process
260 Therefore, the cciss driver implements only the first two of these
261 actions, aborting the command, and resetting the device. Note also
262 that most tape drives will not oblige in aborting commands, and some‐
263 times it appears they will not even obey a reset command, though in
264 most circumstances they will. If the command cannot be aborted and the
265 device cannot be reset, the device will be set offline.
266
267 In the event that the error-handling code is triggered and a tape drive
268 is successfully reset or the tardy command is successfully aborted, the
269 tape drive may still not allow I/O to continue until some command is
270 issued that positions the tape to a known position. Typically you must
271 rewind the tape (by issuing mt -f /dev/st0 rewind for example) before
272 I/O can proceed again to a tape drive that was reset.
273
275 cciss_vol_status(8), hpsa(4), hpacucli(8), hpacuxe(8),
276
277 ⟨http://cciss.sf.net⟩, and Documentation/blockdev/cciss.txt and Docu‐
278 mentation/ABI/testing/sysfs-bus-pci-devices-cciss in the Linux kernel
279 source tree
280
282 This page is part of release 3.53 of the Linux man-pages project. A
283 description of the project, and information about reporting bugs, can
284 be found at http://www.kernel.org/doc/man-pages/.
285
286
287
288Linux 2012-08-05 CCISS(4)