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 newer Smart Array controllers. The hpsa driver is a SCSI driver, while the cciss driver is a âblockâ driver. Actually cciss is both a block driver (for logical drives) AND a SCSI driver (for tape drives). This âsplit-brainedâ design of the cciss driver is a source of excess complexity and eliminating that complexity is one of the reasons for 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 kernel boot parameter âhpsa_allow_any=1â is specified, however these are not tested nor supported by HP with this driver. For older Smart Arrays, the cciss driver should still be used.
The âhpsa_simple_mode=1â boot parameter may be used to prevent the driver from putting the controller into âperformantâ mode. The difference is that with simple mode, each command completion requires an interrupt, while with âperformant modeâ (the default, and ordinarily better performing) it is possible to have multiple command completions indicated by a single interrupt.
HPSA specific entries in /sysÂķ
In addition to the generic SCSI attributes available in /sys, hpsa supports the 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 this attribute 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 is triggered automatically by HPâs Array Configuration Utility (either the GUI or command line variety) so for logical drive changes, the user should not normally have to use this. It may be useful when hot plugging devices like tape 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_revision 7.14The transport_mode indicates whether the controller is in âperformantâ or âsimpleâ mode. This is controlled by the âhpsa_simple_modeâ module parameter.
The âresettableâ read-only attribute indicates whether a particular controller is able to honor the âreset_devicesâ kernel parameter. If the device is resettable, this file will contain a â1â, otherwise, a â0â. This parameter is used by kdump, for example, to reset the controller at driver load time to eliminate any outstanding commands on the controller and get the controller into a known state so that the kdump initiated i/o will work right and not be disrupted in any way by stale commands or other stale state remaining on the controller from the previous kernel. This attribute enables kexec tools to warn the user if they attempt to designate a device which is unable 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_id 600508B1001044395355323037570F77 root@host:/sys/class/scsi_disk/4:0:0:0/device# cat lunid 0x0000004000000000 root@host:/sys/class/scsi_disk/4:0:0:0/device# cat raid_level RAID 0
HPSA specific ioctlsÂķ
For compatibility with applications written for the cciss driver, many, but not all of the ioctls supported by the cciss driver are also supported by the hpsa driver. The data structures used by these are described in include/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 driver to rescan for new devices. This does exactly the same thing as writing to the hpsa 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 storage agents, etc. See cciss_vol_status at http://cciss.sf.net for some examples.