HPSA - Hewlett Packard Smart Array driver¶
This file describes the hpsa SCSI driver for HP Smart Array controllers.The hpsa driver is intended to supplant the cciss driver for newerSmart Array controllers. The hpsa driver is a SCSI driver, while thecciss driver is a “block” driver. Actually cciss is both a blockdriver (for logical drives) AND a SCSI driver (for tape drives). This“split-brained” design of the cciss driver is a source of excesscomplexity and eliminating that complexity is one of the reasonsfor hpsa to exist.
Supported devices¶
- Smart Array P212
- Smart Array P410
- Smart Array P410i
- Smart Array P411
- Smart Array P812
- Smart Array P712m
- Smart Array P711m
- StorageWorks P1210m
Additionally, older Smart Arrays may work with the hpsa driver if the kernelboot parameter “hpsa_allow_any=1” is specified, however these are not testednor supported by HP with this driver. For older Smart Arrays, the ccissdriver should still be used.
The “hpsa_simple_mode=1” boot parameter may be used to prevent the driver fromputting the controller into “performant” mode. The difference is that with simplemode, each command completion requires an interrupt, while with “performant mode”(the default, and ordinarily better performing) it is possible to have multiplecommand completions indicated by a single interrupt.
HPSA specific entries in /sys¶
In addition to the generic SCSI attributes available in /sys, hpsa supportsthe following attributes:
HPSA specific host attributes¶
/sys/class/scsi_host/host*/rescan/sys/class/scsi_host/host*/firmware_revision/sys/class/scsi_host/host*/resettable/sys/class/scsi_host/host*/transport_modethe host “rescan” attribute is a write only attribute. Writing to thisattribute will cause the driver to scan for new, changed, or removed devices(e.g. hot-plugged tape drives, or newly configured or deleted logical drives,etc.) and notify the SCSI midlayer of any changes detected. Normally this istriggered automatically by HP’s Array Configuration Utility (either the GUI orcommand line variety) so for logical drive changes, the user should notnormally have to use this. It may be useful when hot plugging devices liketape drives, or entire storage boxes containing pre-configured logical drives.
The “firmware_revision” attribute contains the firmware version of the Smart Array.For example:
root@host:/sys/class/scsi_host/host4# cat firmware_revision7.14The transport_mode indicates whether the controller is in “performant”or “simple” mode. This is controlled by the “hpsa_simple_mode” moduleparameter.
The “resettable” read-only attribute indicates whether a particularcontroller is able to honor the “reset_devices” kernel parameter. If thedevice is resettable, this file will contain a “1”, otherwise, a “0”. Thisparameter is used by kdump, for example, to reset the controller at driverload time to eliminate any outstanding commands on the controller and get thecontroller into a known state so that the kdump initiated i/o will work rightand not be disrupted in any way by stale commands or other stale stateremaining on the controller from the previous kernel. This attribute enableskexec tools to warn the user if they attempt to designate a device which isunable to honor the reset_devices kernel parameter as a dump device.
HPSA specific disk attributes¶
/sys/class/scsi_disk/c:b:t:l/device/unique_id/sys/class/scsi_disk/c:b:t:l/device/raid_level/sys/class/scsi_disk/c:b:t:l/device/lunid(where c:b:t:l are the controller, bus, target and lun of the device)
For example:
root@host:/sys/class/scsi_disk/4:0:0:0/device# cat unique_id600508B1001044395355323037570F77root@host:/sys/class/scsi_disk/4:0:0:0/device# cat lunid0x0000004000000000root@host:/sys/class/scsi_disk/4:0:0:0/device# cat raid_levelRAID 0
HPSA specific ioctls¶
For compatibility with applications written for the cciss driver, many, butnot all of the ioctls supported by the cciss driver are also supported by thehpsa driver. The data structures used by these are described ininclude/linux/cciss_ioctl.h
- CCISS_DEREGDISK, CCISS_REGNEWDISK, CCISS_REGNEWD
- The above three ioctls all do exactly the same thing, which is to cause the driverto rescan for new devices. This does exactly the same thing as writing to thehpsa specific host “rescan” attribute.
- CCISS_GETPCIINFO
- Returns PCI domain, bus, device and function and “board ID” (PCI subsystem ID).
- CCISS_GETDRIVVER
Returns driver version in three bytes encoded as:
(major_version << 16) | (minor_version << 8) | (subminor_version)- CCISS_PASSTHRU, CCISS_BIG_PASSTHRU
- Allows “BMIC” and “CISS” commands to be passed through to the Smart Array.These are used extensively by the HP Array Configuration Utility, SNMP storageagents, etc. See cciss_vol_status athttp://cciss.sf.net for some examples.