1 .\" Copyright (C) 2011, Hewlett-Packard Development Company, L.P.
2 .\" Written by Stephen M. Cameron <scameron@beardog.cce.hp.com>
3 .\" Licensed under GNU General Public License version 2 (GPLv2)
5 .\" shorthand for double quote that works everywhere.
7 .TH CCISS 4 2012-08-05 "Linux" "Linux Programmer's Manual"
9 cciss \- HP Smart Array block driver
12 modprobe cciss [ cciss_allow_hpsa=1 ]
16 is a block driver for older HP Smart Array RAID controllers.
18 .IR "cciss_allow_hpsa=1" :
19 This option prevents the
21 driver from attempting to drive any controllers that the
23 driver is capable of controlling, which is to say, the
25 driver is restricted by this option to the following controllers:
46 .SS Supported Hardware
49 driver supports the following Smart Array boards:
59 Smart Array 6400 U320 Expansion Module
77 .SS Configuration Details
78 To configure HP Smart Array controllers,
79 use the HP Array Configuration Utility
84 or the Offline ROM-based Configuration Utility (ORCA)
85 run from the Smart Array's option ROM at boot time.
88 The device naming scheme is as follows:
104 b7 b6 b5 b4 b3 b2 b1 b0
105 |----+----| |----+----|
107 | +-------- Partition ID (0=wholedev, 1-15 partition)
109 +-------------------- Logical Volume number
111 The device naming scheme is:
113 /dev/cciss/c0d0 Controller 0, disk 0, whole device
114 /dev/cciss/c0d0p1 Controller 0, disk 0, partition 1
115 /dev/cciss/c0d0p2 Controller 0, disk 0, partition 2
116 /dev/cciss/c0d0p3 Controller 0, disk 0, partition 3
118 /dev/cciss/c1d1 Controller 1, disk 1, whole device
119 /dev/cciss/c1d1p1 Controller 1, disk 1, partition 1
120 /dev/cciss/c1d1p2 Controller 1, disk 1, partition 2
121 /dev/cciss/c1d1p3 Controller 1, disk 1, partition 3
126 .I /proc/driver/cciss/cciss[0-9]+
127 contain information about
128 the configuration of each controller.
132 $ \fBcd /proc/driver/cciss\fP
135 -rw-r--r-- 1 root root 0 2010-09-10 10:38 cciss0
136 -rw-r--r-- 1 root root 0 2010-09-10 10:38 cciss1
137 -rw-r--r-- 1 root root 0 2010-09-10 10:38 cciss2
139 cciss2: HP Smart Array P800 Controller
141 Firmware Version: 7.14
145 Current # commands on controller: 0
146 Max Q depth since init: 1
147 Max # commands on controller since init: 2
148 Max SG entries since init: 32
149 Sequential access devices: 0
151 cciss/c2d0: 36.38GB RAID 0
156 .I /sys/bus/pci/devices/<dev>/ccissX/cXdY/model
157 Displays the SCSI INQUIRY page 0 model for logical drive
162 .I /sys/bus/pci/devices/<dev>/ccissX/cXdY/rev
163 Displays the SCSI INQUIRY page 0 revision for logical drive
168 .I /sys/bus/pci/devices/<dev>/ccissX/cXdY/unique_id
169 Displays the SCSI INQUIRY page 83 serial number for logical drive
174 .I /sys/bus/pci/devices/<dev>/ccissX/cXdY/vendor
175 Displays the SCSI INQUIRY page 0 vendor for logical drive
180 .I /sys/bus/pci/devices/<dev>/ccissX/cXdY/block:cciss!cXdY
182 .IR /sys/block/cciss!cXdY .
184 .I /sys/bus/pci/devices/<dev>/ccissX/rescan
185 When this file is written to, the driver rescans the controller
186 to discover any new, removed, or modified logical drives.
188 .I /sys/bus/pci/devices/<dev>/ccissX/resettable
189 A value of 1 displayed in this file indicates that
190 the "reset_devices=1" kernel parameter (used by
192 is honored by this controller.
193 A value of 0 indicates that the
194 "reset_devices=1" kernel parameter will not be honored.
195 Some models of Smart Array are not able to honor this parameter.
197 .I /sys/bus/pci/devices/<dev>/ccissX/cXdY/lunid
198 Displays the 8-byte LUN ID used to address logical drive
203 .I /sys/bus/pci/devices/<dev>/ccissX/cXdY/raid_level
204 Displays the RAID level of logical drive
209 .I /sys/bus/pci/devices/<dev>/ccissX/cXdY/usage_count
210 Displays the usage count (number of opens) of logical drive
214 .SS SCSI tape drive and medium changer support
215 SCSI sequential access devices and medium changer devices are supported and
216 appropriate device nodes are automatically created (e.g.,
222 You must enable "SCSI tape drive support for Smart Array 5xxx" and
223 "SCSI support" in your kernel configuration to be able to use SCSI
224 tape drives with your Smart Array 5xxx controller.
226 Additionally, note that the driver will not engage the SCSI core at
228 The driver must be directed to dynamically engage the SCSI core via
229 the /proc file-system entry,
230 which the "block" side of the driver creates as
231 .I /proc/driver/cciss/cciss*
233 This is because at driver init time,
234 the SCSI core may not yet be initialized (because the driver is a block
235 driver) and attempting to register it with the SCSI core in such a case
237 This is best done via an initialization script
240 but could vary depending on distribution).
244 for x in /proc/driver/cciss/cciss[0-9]*
246 echo "engage scsi" > $x
250 Once the SCSI core is engaged by the driver, it cannot be disengaged
251 (except by unloading the driver, if it happens to be linked as a module.)
253 Note also that if no sequential access devices or medium changers are
254 detected, the SCSI core will not be engaged by the action of the above
257 .SS Hot plug support for SCSI tape drives
259 Hot plugging of SCSI tape drives is supported, with some caveats.
262 driver must be informed that changes to the SCSI bus
264 This may be done via the /proc file system.
267 echo "rescan" > /proc/scsi/cciss0/1
269 This causes the driver to:
272 query the adapter about changes to the
273 physical SCSI buses and/or fibre channel arbitrated loop, and
275 make note of any new or removed sequential access devices
279 The driver will output messages indicating which
280 devices have been added or removed and the controller, bus, target and
281 lun used to address each device.
282 The driver then notifies the SCSI midlayer
285 Note that the naming convention of the /proc file-system entries
286 contains a number in addition to the driver name
288 instead of just "cciss", which you might expect).
292 sequential access devices and medium changers are presented
293 as SCSI devices to the SCSI midlayer by the
296 Specifically, physical SCSI disk drives are
298 presented to the SCSI midlayer.
299 The only disk devices that are presented to the kernel are logical
300 drives that the array controller constructs from regions on
302 The logical drives are presented to the block layer
303 (not to the SCSI midlayer).
304 It is important for the driver to prevent the kernel from accessing the
305 physical drives directlyi, since these drives are used by the array
306 controller to construct the logical drives.
307 .SS SCSI error handling for tape drives and medium changers
308 The Linux SCSI midlayer provides an error-handling protocol that
309 is initiated whenever a SCSI command fails to complete within a
310 certain amount of time (which can vary depending on the command).
313 driver participates in this protocol to some extent.
314 The normal protocol is a four-step process:
316 First, the device is told to abort the command.
318 If that doesn't work, the device is reset.
320 If that doesn't work, the SCSI bus is reset.
322 If that doesn't work the host bus adapter is reset.
327 driver as well as a SCSI driver and only the tape drives and medium
328 changers are presented to the SCSI midlayer
329 Furthermore, unlike more
330 straightforward SCSI drivers, disk I/O continues through the block
331 side during the SCSI error-recovery process
334 driver implements only the first two of these actions,
335 aborting the command, and resetting the device.
336 Note also that most tape drives will not oblige
337 in aborting commands, and sometimes it appears they will not even
338 obey a reset command, though in most circumstances they will.
339 If the command cannot be aborted and the device cannot be
340 reset, the device will be set offline.
342 In the event that the error-handling code is triggered and a tape drive is
343 successfully reset or the tardy command is successfully aborted, the
344 tape drive may still not allow I/O to continue until some command
345 is issued that positions the tape to a known position.
346 Typically you must rewind the tape (by issuing
347 .I "mt -f /dev/st0 rewind"
348 for example) before I/O can proceed again to a tape drive that was reset.
350 .BR cciss_vol_status (8),
355 .UR http://cciss.sf.net
358 .I Documentation/blockdev/cciss.txt
360 .I Documentation/ABI/testing/sysfs-bus-pci-devices-cciss
361 in the Linux kernel source tree
363 .\" Don Brace, Steve Cameron, Chase Maupin, Mike Miller, Michael Ni,
364 .\" Charles White, Francis Wiran
365 .\" and probably some other people.