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
256 .SS Hot plug support for SCSI tape drives
257 Hot plugging of SCSI tape drives is supported, with some caveats.
260 driver must be informed that changes to the SCSI bus
262 This may be done via the /proc file system.
265 echo "rescan" > /proc/scsi/cciss0/1
267 This causes the driver to:
270 query the adapter about changes to the
271 physical SCSI buses and/or fibre channel arbitrated loop, and
273 make note of any new or removed sequential access devices
277 The driver will output messages indicating which
278 devices have been added or removed and the controller, bus, target and
279 lun used to address each device.
280 The driver then notifies the SCSI midlayer
283 Note that the naming convention of the /proc file-system entries
284 contains a number in addition to the driver name
286 instead of just "cciss", which you might expect).
290 sequential access devices and medium changers are presented
291 as SCSI devices to the SCSI midlayer by the
294 Specifically, physical SCSI disk drives are
296 presented to the SCSI midlayer.
297 The only disk devices that are presented to the kernel are logical
298 drives that the array controller constructs from regions on
300 The logical drives are presented to the block layer
301 (not to the SCSI midlayer).
302 It is important for the driver to prevent the kernel from accessing the
303 physical drives directly, since these drives are used by the array
304 controller to construct the logical drives.
305 .SS SCSI error handling for tape drives and medium changers
306 The Linux SCSI midlayer provides an error-handling protocol that
307 is initiated whenever a SCSI command fails to complete within a
308 certain amount of time (which can vary depending on the command).
311 driver participates in this protocol to some extent.
312 The normal protocol is a four-step process:
314 First, the device is told to abort the command.
316 If that doesn't work, the device is reset.
318 If that doesn't work, the SCSI bus is reset.
320 If that doesn't work the host bus adapter is reset.
325 driver as well as a SCSI driver and only the tape drives and medium
326 changers are presented to the SCSI midlayer
327 Furthermore, unlike more
328 straightforward SCSI drivers, disk I/O continues through the block
329 side during the SCSI error-recovery process
332 driver implements only the first two of these actions,
333 aborting the command, and resetting the device.
334 Note also that most tape drives will not oblige
335 in aborting commands, and sometimes it appears they will not even
336 obey a reset command, though in most circumstances they will.
337 If the command cannot be aborted and the device cannot be
338 reset, the device will be set offline.
340 In the event that the error-handling code is triggered and a tape drive is
341 successfully reset or the tardy command is successfully aborted, the
342 tape drive may still not allow I/O to continue until some command
343 is issued that positions the tape to a known position.
344 Typically you must rewind the tape (by issuing
345 .I "mt -f /dev/st0 rewind"
346 for example) before I/O can proceed again to a tape drive that was reset.
348 .BR cciss_vol_status (8),
353 .UR http://cciss.sf.net
356 .I Documentation/blockdev/cciss.txt
358 .I Documentation/ABI/testing/sysfs-bus-pci-devices-cciss
359 in the Linux kernel source tree
361 .\" Don Brace, Steve Cameron, Chase Maupin, Mike Miller, Michael Ni,
362 .\" Charles White, Francis Wiran
363 .\" and probably some other people.