1 .\" Copyright (C) 2011, Hewlett-Packard Development Company, L.P.
2 .\" Written by Stephen M. Cameron <scameron@beardog.cce.hp.com>
4 .\" %%%LICENSE_START(GPLv2_ONELINE)
5 .\" Licensed under GNU General Public License version 2 (GPLv2)
8 .\" shorthand for double quote that works everywhere.
10 .TH CCISS 4 2012-08-05 "Linux" "Linux Programmer's Manual"
12 cciss \- HP Smart Array block driver
15 modprobe cciss [ cciss_allow_hpsa=1 ]
19 is a block driver for older HP Smart Array RAID controllers.
21 .IR "cciss_allow_hpsa=1" :
22 This option prevents the
24 driver from attempting to drive any controllers that the
26 driver is capable of controlling, which is to say, the
28 driver is restricted by this option to the following controllers:
49 .SS Supported hardware
52 driver supports the following Smart Array boards:
62 Smart Array 6400 U320 Expansion Module
80 .SS Configuration details
81 To configure HP Smart Array controllers,
82 use the HP Array Configuration Utility
87 or the Offline ROM-based Configuration Utility (ORCA)
88 run from the Smart Array's option ROM at boot time.
91 The device naming scheme is as follows:
107 b7 b6 b5 b4 b3 b2 b1 b0
108 |----+----| |----+----|
110 | +-------- Partition ID (0=wholedev, 1-15 partition)
112 +-------------------- Logical Volume number
114 The device naming scheme is:
116 /dev/cciss/c0d0 Controller 0, disk 0, whole device
117 /dev/cciss/c0d0p1 Controller 0, disk 0, partition 1
118 /dev/cciss/c0d0p2 Controller 0, disk 0, partition 2
119 /dev/cciss/c0d0p3 Controller 0, disk 0, partition 3
121 /dev/cciss/c1d1 Controller 1, disk 1, whole device
122 /dev/cciss/c1d1p1 Controller 1, disk 1, partition 1
123 /dev/cciss/c1d1p2 Controller 1, disk 1, partition 2
124 /dev/cciss/c1d1p3 Controller 1, disk 1, partition 3
128 .I /proc/driver/cciss/cciss[0-9]+
129 contain information about
130 the configuration of each controller.
134 $ \fBcd /proc/driver/cciss\fP
137 -rw-r--r-- 1 root root 0 2010-09-10 10:38 cciss0
138 -rw-r--r-- 1 root root 0 2010-09-10 10:38 cciss1
139 -rw-r--r-- 1 root root 0 2010-09-10 10:38 cciss2
141 cciss2: HP Smart Array P800 Controller
143 Firmware Version: 7.14
147 Current # commands on controller: 0
148 Max Q depth since init: 1
149 Max # commands on controller since init: 2
150 Max SG entries since init: 32
151 Sequential access devices: 0
153 cciss/c2d0: 36.38GB RAID 0
157 .I /sys/bus/pci/devices/<dev>/ccissX/cXdY/model
158 Displays the SCSI INQUIRY page 0 model for logical drive
163 .I /sys/bus/pci/devices/<dev>/ccissX/cXdY/rev
164 Displays the SCSI INQUIRY page 0 revision for logical drive
169 .I /sys/bus/pci/devices/<dev>/ccissX/cXdY/unique_id
170 Displays the SCSI INQUIRY page 83 serial number for logical drive
175 .I /sys/bus/pci/devices/<dev>/ccissX/cXdY/vendor
176 Displays the SCSI INQUIRY page 0 vendor for logical drive
181 .I /sys/bus/pci/devices/<dev>/ccissX/cXdY/block:cciss!cXdY
183 .IR /sys/block/cciss!cXdY .
185 .I /sys/bus/pci/devices/<dev>/ccissX/rescan
186 When this file is written to, the driver rescans the controller
187 to discover any new, removed, or modified logical drives.
189 .I /sys/bus/pci/devices/<dev>/ccissX/resettable
190 A value of 1 displayed in this file indicates that
191 the "reset_devices=1" kernel parameter (used by
193 is honored by this controller.
194 A value of 0 indicates that the
195 "reset_devices=1" kernel parameter will not be honored.
196 Some models of Smart Array are not able to honor this parameter.
198 .I /sys/bus/pci/devices/<dev>/ccissX/cXdY/lunid
199 Displays the 8-byte LUN ID used to address logical drive
204 .I /sys/bus/pci/devices/<dev>/ccissX/cXdY/raid_level
205 Displays the RAID level of logical drive
210 .I /sys/bus/pci/devices/<dev>/ccissX/cXdY/usage_count
211 Displays the usage count (number of opens) of logical drive
215 .SS SCSI tape drive and medium changer support
216 SCSI sequential access devices and medium changer devices are supported and
217 appropriate device nodes are automatically created (e.g.,
223 You must enable "SCSI tape drive support for Smart Array 5xxx" and
224 "SCSI support" in your kernel configuration to be able to use SCSI
225 tape drives with your Smart Array 5xxx controller.
227 Additionally, note that the driver will not engage the SCSI core at
229 The driver must be directed to dynamically engage the SCSI core via the
232 which the "block" side of the driver creates as
233 .I /proc/driver/cciss/cciss*
235 This is because at driver init time,
236 the SCSI core may not yet be initialized (because the driver is a block
237 driver) and attempting to register it with the SCSI core in such a case
239 This is best done via an initialization script
242 but could vary depending on distribution).
246 for x in /proc/driver/cciss/cciss[0-9]*
248 echo "engage scsi" > $x
252 Once the SCSI core is engaged by the driver, it cannot be disengaged
253 (except by unloading the driver, if it happens to be linked as a module.)
255 Note also that if no sequential access devices or medium changers are
256 detected, the SCSI core will not be engaged by the action of the above
258 .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
269 echo "rescan" > /proc/scsi/cciss0/1
271 This causes the driver to:
274 query the adapter about changes to the
275 physical SCSI buses and/or fibre channel arbitrated loop, and
277 make note of any new or removed sequential access devices
281 The driver will output messages indicating which
282 devices have been added or removed and the controller, bus, target, and
283 lun used to address each device.
284 The driver then notifies the SCSI midlayer
287 Note that the naming convention of the
290 contains a number in addition to the driver name
292 instead of just "cciss", which you might expect).
296 sequential access devices and medium changers are presented
297 as SCSI devices to the SCSI midlayer by the
300 Specifically, physical SCSI disk drives are
302 presented to the SCSI midlayer.
303 The only disk devices that are presented to the kernel are logical
304 drives that the array controller constructs from regions on
306 The logical drives are presented to the block layer
307 (not to the SCSI midlayer).
308 It is important for the driver to prevent the kernel from accessing the
309 physical drives directly, since these drives are used by the array
310 controller to construct the logical drives.
311 .SS SCSI error handling for tape drives and medium changers
312 The Linux SCSI midlayer provides an error-handling protocol that
313 is initiated whenever a SCSI command fails to complete within a
314 certain amount of time (which can vary depending on the command).
317 driver participates in this protocol to some extent.
318 The normal protocol is a four-step process:
320 First, the device is told to abort the command.
322 If that doesn't work, the device is reset.
324 If that doesn't work, the SCSI bus is reset.
326 If that doesn't work, the host bus adapter is reset.
331 driver as well as a SCSI driver and only the tape drives and medium
332 changers are presented to the SCSI midlayer.
333 Furthermore, unlike more
334 straightforward SCSI drivers, disk I/O continues through the block
335 side during the SCSI error-recovery process.
338 driver implements only the first two of these actions,
339 aborting the command, and resetting the device.
340 Note also that most tape drives will not oblige
341 in aborting commands, and sometimes it appears they will not even
342 obey a reset command, though in most circumstances they will.
343 If the command cannot be aborted and the device cannot be
344 reset, the device will be set offline.
346 In the event that the error-handling code is triggered and a tape drive is
347 successfully reset or the tardy command is successfully aborted, the
348 tape drive may still not allow I/O to continue until some command
349 is issued that positions the tape to a known position.
350 Typically you must rewind the tape (by issuing
351 .I "mt -f /dev/st0 rewind"
352 for example) before I/O can proceed again to a tape drive that was reset.
354 .BR cciss_vol_status (8),
359 .UR http://cciss.sf.net
362 .I Documentation/blockdev/cciss.txt
364 .I Documentation/ABI/testing/sysfs-bus-pci-devices-cciss
365 in the Linux kernel source tree
367 .\" Don Brace, Steve Cameron, Chase Maupin, Mike Miller, Michael Ni,
368 .\" Charles White, Francis Wiran
369 .\" and probably some other people.