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