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 2011-09-21 "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 cciss driver
20 from attempting to drive any controllers which the hpsa driver
21 is capable of controlling, which is to say, the cciss driver
22 is restricted by this option to the following controllers:
43 .SS Supported Hardware
46 driver supports the following Smart Array boards:
56 Smart Array 6400 U320 Expansion Module
74 .SS Configuration Details
75 To configure HP Smart Array controllers,
76 use the HP Array Configuration Utility
77 (either hpacuxe or hpacucli) or
78 the Offline ROM-based Configuration Utility (ORCA)
79 run from the Smart Array's option ROM at boot time.
82 The device naming scheme is as follows:
98 b7 b6 b5 b4 b3 b2 b1 b0
99 |----+----| |----+----|
101 | +-------- Partition ID (0=wholedev, 1-15 partition)
103 +-------------------- Logical Volume number
105 The device naming scheme is:
107 /dev/cciss/c0d0 Controller 0, disk 0, whole device
108 /dev/cciss/c0d0p1 Controller 0, disk 0, partition 1
109 /dev/cciss/c0d0p2 Controller 0, disk 0, partition 2
110 /dev/cciss/c0d0p3 Controller 0, disk 0, partition 3
112 /dev/cciss/c1d1 Controller 1, disk 1, whole device
113 /dev/cciss/c1d1p1 Controller 1, disk 1, partition 1
114 /dev/cciss/c1d1p2 Controller 1, disk 1, partition 2
115 /dev/cciss/c1d1p3 Controller 1, disk 1, partition 3
120 .I /proc/driver/cciss/cciss[0-9]+
121 contain information about
122 the configuration of each controller.
126 $ \fBcd /proc/driver/cciss\fP
129 -rw-r--r-- 1 root root 0 2010-09-10 10:38 cciss0
130 -rw-r--r-- 1 root root 0 2010-09-10 10:38 cciss1
131 -rw-r--r-- 1 root root 0 2010-09-10 10:38 cciss2
133 cciss2: HP Smart Array P800 Controller
135 Firmware Version: 7.14
139 Current # commands on controller: 0
140 Max Q depth since init: 1
141 Max # commands on controller since init: 2
142 Max SG entries since init: 32
143 Sequential access devices: 0
145 cciss/c2d0: 36.38GB RAID 0
151 .I /sys/bus/pci/devices/<dev>/ccissX/cXdY/model
152 Displays the SCSI INQUIRY page 0 model for logical drive Y of controller X.
154 .I /sys/bus/pci/devices/<dev>/ccissX/cXdY/rev
155 Displays the SCSI INQUIRY page 0 revision for logical drive Y of controller X.
157 .I /sys/bus/pci/devices/<dev>/ccissX/cXdY/unique_id
158 Displays the SCSI INQUIRY page 83 serial number for
159 logical drive Y of controller X.
161 .I /sys/bus/pci/devices/<dev>/ccissX/cXdY/vendor
162 Displays the SCSI INQUIRY page 0 vendor for logical drive Y of controller X.
164 .I /sys/bus/pci/devices/<dev>/ccissX/cXdY/block:cciss!cXdY
165 A symbolic link to /sys/block/cciss!cXdY
167 .I /sys/bus/pci/devices/<dev>/ccissX/rescan
168 Kicks off a rescan of the controller to discover logical drive topology changes.
170 .I /sys/bus/pci/devices/<dev>/ccissX/resettable
171 A value of 1 indicates the "reset_devices=1" kernel parameter (used by
172 kdump) is honored by this controller.
173 A value of 0 indicates the
174 "reset_devices=1" kernel parameter will not be honored.
175 Some models of Smart Array are not able to honor this parameter.
177 .I /sys/bus/pci/devices/<dev>/ccissX/cXdY/lunid
178 Displays the 8-byte LUN ID used to address logical drive Y of controller X.
180 .I /sys/bus/pci/devices/<dev>/ccissX/cXdY/raid_level
181 Displays the RAID level of logical drive Y of controller X.
183 .I /sys/bus/pci/devices/<dev>/ccissX/cXdY/usage_count
184 Displays the usage count (number of opens) of logical drive Y of controller X.
185 .SS SCSI tape drive and medium changer support
186 SCSI sequential access devices and medium changer devices are supported and
187 appropriate device nodes are automatically created (e.g.
193 You must enable "SCSI tape drive support for Smart Array 5xxx" and
194 "SCSI support" in your kernel configuration to be able to use SCSI
195 tape drives with your Smart Array 5xxx controller.
197 Additionally, note that the driver will not engage the SCSI core at init time.
198 The driver must be directed to dynamically engage the SCSI core via
199 the /proc filesystem entry which the "block" side of the driver creates as
200 /proc/driver/cciss/cciss* at runtime.
201 This is because at driver init time,
202 the SCSI core may not yet be initialized (because the driver is a block
203 driver) and attempting to register it with the SCSI core in such a case
205 This is best done via an initialization script
208 but could vary depending on distribution).
212 for x in /proc/driver/cciss/cciss[0-9]*
214 echo "engage scsi" > $x
218 Once the SCSI core is engaged by the driver, it cannot be disengaged
219 (except by unloading the driver, if it happens to be linked as a module.)
221 Note also that if no sequential access devices or medium changers are
222 detected, the SCSI core will not be engaged by the action of the above
225 .SS Hot plug support for SCSI tape drives
227 Hot plugging of SCSI tape drives is supported, with some caveats.
228 The cciss driver must be informed that changes to the SCSI bus
230 This may be done via the /proc filesystem.
233 echo "rescan" > /proc/scsi/cciss0/1
235 This causes the driver to query the adapter about changes to the
236 physical SCSI buses and/or fibre channel arbitrated loop and the
237 driver to make note of any new or removed sequential access devices
239 The driver will output messages indicating what
240 devices have been added or removed and the controller, bus, target and
241 lun used to address the device.
242 It then notifies the SCSI mid layer
245 Note that the naming convention of the /proc filesystem entries
246 contains a number in addition to the driver name
248 instead of just "cciss" which you might expect).
252 sequential access devices and medium changers are presented
253 as SCSI devices to the SCSI mid layer by the cciss driver.
254 Specifically, physical SCSI disk drives are
256 presented to the SCSI mid layer.
257 The physical SCSI disk drives are controlled directly by the array controller
258 hardware and it is important to prevent the kernel from attempting to directly
259 access these devices too, as if the array controller were merely a SCSI
260 controller in the same way that we are allowing it to access SCSI tape drives.
261 .SS SCSI error handling for tape drives and medium changers
262 The linux SCSI mid layer provides an error handling protocol which
263 kicks into gear whenever a SCSI command fails to complete within a
264 certain amount of time (which can vary depending on the command).
265 The cciss driver participates in this protocol to some extent.
266 The normal protocol is a four step process.
267 First the device is told to abort the command.
268 If that doesn't work, the device is reset.
269 If that doesn't work, the SCSI bus is reset.
270 If that doesn't work the host bus adapter is reset.
271 Because the cciss driver is a block
272 driver as well as a SCSI driver and only the tape drives and medium
273 changers are presented to the SCSI mid layer, and unlike more
274 straightforward SCSI drivers, disk i/o continues through the block
275 side during the SCSI error recovery process, the cciss driver only
276 implements the first two of these actions, aborting the command, and
277 resetting the device.
278 Additionally, most tape drives will not oblige
279 in aborting commands, and sometimes it appears they will not even
280 obey a reset command, though in most circumstances they will.
281 In the case that the command cannot be aborted and the device cannot be
282 reset, the device will be set offline.
284 In the event the error handling code is triggered and a tape drive is
285 successfully reset or the tardy command is successfully aborted, the
286 tape drive may still not allow i/o to continue until some command
287 is issued which positions the tape to a known position.
288 Typically you must rewind the tape (by issuing
289 .I "mt -f /dev/st0 rewind"
291 before I/O can proceed again to a tape drive which was reset.
296 .BR cciss_vol_status (8),
297 .IR http://cciss.sf.net ,
298 and the linux kernel source files
299 .I Documentation/blockdev/cciss.txt
301 .I Documentation/ABI/testing/sysfs-bus-pci-devices-cciss
303 .\" Don Brace, Steve Cameron, Chase Maupin, Mike Miller, Michael Ni,
304 .\" Charles White, Francis Wiran
305 .\" and probably some other people.