HP Smart Array CCISS driver


  • Downloads
  • All Downloads
  • About Source RPMs
  • About Source DEBs
  • About Source tarballs
  • binary drivers from hp.com
  • HW/FW Documentation
  • cciss utilities
  • Supported Hardware
  • Contact
  • Recent kernel mailing list traffic related to "cciss"
  • HP.com
  • Kernel.org
  • Here you will find source RPMs and source tarballs for the cciss driver for HP's Smart Array line of hardware RAID controllers. Most likely, you do not need these, as the cciss driver has been in the Linux kernel for a very long time, and most distributions will already have a cciss driver which will work for you as is.

    From time to time there may be instances in which hardware or driver features are not supported by the cciss driver which comes with your distribution or kernel, because it is too old, or the hardware is too new, etc. In these instances you may wish to try the source RPMs or tarballs provided here.

    If you are looking for binary RPMs or driver diskette images

    We do not supply any binary RPMs from this page. HP does supply binary RPMs and driver diskettes (for loading drivers during OS installation) for supported Linux distributions on hp.com. See these search results from hp.com. You can use these if you have a supported distribution running a supported kernel.


    Source RPMs:

    You may try to use these to build a binary RPM.

    To install, download the RPM file, and use

    rpm -ihv rpmfile

    This will deposit the cciss.spec file in /usr/src/redhat/SPECS, for instance on Redhat's distribution. (Your distribution may differ.) Change to this directory, and execute:

    	cd /usr/src/redhat/SPECS
    	rpmbuild -bb cciss.spec
    

    This will create the binary RPM in, for instance, /usr/src/redhat/RPMS/`arch` directory. (Your distribution may differ.) This binary RPM may then be installed in the usual way, for instance:

    	rpm -ihv cpq_cciss-2.6.14-7.ia64.rpm
    

    Note: The binary RPMs produced by the source RPMs here are a greatly simplified version of the binary RPMs distributed by HP. The binary RPMs distributed by HP do many things like modifying grub configuration files or lilo.conf as needed, modifying /etc/modules.conf, etc. The binary RPMs created by the source RPMs here do not do these things, they only build the driver module and initrd image. It is up to you to make any changes to your grub or lilo configuration files and /etc/modules.conf (or modprobe.conf) files as needed.

    Oct 4, 2007: Note: There has been a report that sometimes the OS supplied /sbin/mkinitrd script used by the RPM will get the wrong cciss.*.ko file out of /lib/modules/`uname -r`/kernel/drivers/block and put it in the initrd image. So far, I haven't had any luck duplicating this problem.


    Source DEBs:

    Debian source package copies cciss files to /var/hp/storage/cciss directory and builds cciss module against installed kernel's source. It is required to have kernel source code available at /usr/src/linux-x.x.xx. If necessary, deb package will compile kernel as well.

    To install, download Debian cciss source package (.deb file) and issue following command

    prompt>dpkg -i hpcciss-src-x_x_xx.deb

    This will copy cciss source files to /var/hp/storage/cciss directory and build cciss module binary against installed kernel. Newly built cciss driver will be placed under /var/hp/storage/cciss, if build is successful.

    Note: Debian package is greatly simplified. It neither modifies bootloader (grub or lilo.conf) configuration files, nor modify /etc/modules.conf, nor build initrd. Debian package only builds binary cciss module. It is up to the user to make any changes to bootloader configuration files, /etc/modules.conf (or modprobe.conf) files and initrd as needed.


    Source tarballs:

    NOTICE: the source tarballs do not create a single parent directory, so it is up to you do so yourself.

    To build the source tarballs:

    1. Create a directory and unpack the tarball.
      	[scameron@quandary somedir]$ mkdir cciss-3.6.14
      	[scameron@quandary somedir]$ cd cciss-3.6.14
      	[scameron@quandary cciss-3.6.14]$ tar xzvf ../cciss-3.6.14.tar.gz
      	configure
      	Documentation/
      	Documentation/mkdev.cciss
      	Documentation/cciss.txt
      	Documentation/rmdev_dyn.cciss
      	Documentation/mkdev_dyn.cciss
      	drivers/
      	drivers/block/
      	drivers/block/cciss_cmd.h
      	drivers/block/cciss.h
      	drivers/block/cciss_scsi.c
      	drivers/block/cciss.c
      	drivers/block/cciss_scsi.h
      	drivers/block/Makefile
      	include/
      	include/linux/
      	include/linux/cciss_ioctl.h
      	INSTALL
      -->	MAKEFILE
      	Makefile_redhat
      	Makefile_suse
      -->	README
      	RELEASE
      	UNINSTALL
      
      The source tarballs are copies of what is used by the source RPMs. In fact, you could extract the source tarballs from the source RPMs by using rpm2cpio.
    2. Read the README file for information about how the tarball is used in the source RPM.
    3. Read MAKEFILE1 for further instructions on building the driver from the tarball without any involvement of RPMs.

      1Yes, I know MAKEFILE is traditionally one of the names of files that the make command usually reads. In this case, it is just a text file, documentation, meant for human consumption.


    Downloads
    CCISS 4.6 tarballs
    CCISS 4.6 source rpms
    CCISS 4.6 source deb
    Last updated Thu Oct 29, 2009 latest version is 4.6.20-22 These are meant for 2.6.26 or later kernels (typically, SuSE SLES11, etc.)
    CCISS 3.6 source RPMs
    CCISS 3.6 source tarballs
    CCISS 3.6 kdump source RPMs
    CCISS 3.6 kdump source tarballs
    Use these for systems using 2.6 kernels later than about 2.6.15. From 2.6.11 to 2.6.15 is kind of a gray area during which some kernel interfaces the driver relies upon were in flux.
    Last updated Fri Oct 18, 2009 latest version is 3.6.20-20

    Changes since 3.6.20-16:

    • TBD.

    Changes since 3.6.18-17:

    • Fixed bug where deleting logical volumes could hang the system.
    • Fixed a memory leak in rebuild_lun_table code.
    • Fixed a panic that could arise during an insmod and rmmod of the cciss driver.
    • Fix procfs regression. This patch will get called only once for each controller. The earlier fix would be called anytime something changed.
    • Fixed wrong usage of a pointer for sysfs symlink.
    • Fix firmware version not being printed in procfs.
    • Fixed sysfs link issue.
    • Added check_unit_attention() to catch UA's on MSA2000. The function prints a message then retries the command that returned with a unit attention.
    • Fixed a bug found by the L1 test suite. The system would panic when deleting many logical volumes at one time.
    • Removed unneeded lock in sysfs code.
    • Updated rebuild_lun_table to avoid pulling a logical volume out from under acuxe or hpacucli.
    • Cleaned up code for adding and removing logical volumes.
    • Mkinitrd has changed on rhel5u1 and higher systems. It can no longer find the rhel5 base media cciss driver following an uninstalled of an HP cciss rpm. Without this fix the system will panic on reboot when the HP cciss rpm has been uninstalled.
    • Fixed race condition that could show up during driver init.
    • Fixed "out of memory" error introduced in the 2.6.20-4 aand 3.6.20-4 drivers
    • Added 1024 lun support. OS distros with warnings.
    • Added a procfs interface so users can tell the driver to rescan our devices. Needed for MSA2012 support since MSA2012 does not report configuration changes back to the driver.
    • Added dynamic outstanding command turning on a per controller basis.
    CCISS 2.6 source RPMs
    CCISS 2.6 source tarballs
    Use these for 2.6 kernel up to about 2.6.11. RHEL 4.x and SLES 9.x are examples of systems based upon such kernels. From kernels 2.6.11 to 2.6.15 is kind of a gray area during which some kernel interfaces the driver relies upon were in flux.
    Last updated Tue Oct 16, 2009 latest version is 2.6.20-23

    Changes since 2.6.20-16

    • TBD.

    Changes since 2.6.18-16

    • Fixed bug where deleting logical volumes could hang the system.
    • Fixed issue where ACU would hang after several operations.
    • Fixed a panic that could arise during an insmod and rmmod of the cciss driver.
    • Changed kzalloc back to kmalloc + memset to continue support for older OS version.
    • Fix procfs regression. This patch will get called only once for each controller. The earlier fix would be called anytime something changed.
    • Fixed wrong usage of a pointer for sysfs symlink.
    • Fix firmware version not being printed in procfs.
    • Fixed issue where controllers that had no configured volumes did not show up in the OS.
    • Fixed sysfs link issue.
    • Added check_unit_attention() to catch UA's on MSA2000. The function prints a message then retries the command that returned with a unit attention.
    • Updated rebuild_lun_table to avoid pulling a logical volume out from under acuxe or hpacucli.
    • Cleaned up code for adding and removing logical volumes.
    • Fixed race condition that could show up during driver init.
    • Fixed "out of memory" error introduced in the 2.6.20-4 aand 3.6.20-4 drivers
    • Added 1024 lun support.
    • Added dynamic outstanding command turning on a per controller basis.
    CCISS 2.4 source RPMs
    CCISS_2.4 source tarballs
    Use these for 2.4 based kernels, such as RHEL 3.x, SLES 8 or (SuSE) United Linux 1.0. These won't work with very old kernels such as the 2.4.7 series used by SLES 7.0, etc.

    BTW, if you happen across a 2.6.12 version of the cciss driver, or patches to bring the driver up to 2.6.12, don't use them as this version will hang. (You'll find out soon enough if you do try to use it.) There are newer versions. Use those instead.


    Hardware/Firmware Documentation


    CCISS Utilities

    • cciss_vol_status Nov 19, 2009: New release: v. 1.06. You are strongly advised to upgrade from previous version, 1.04 due to a bug in the latter in reporting of logical drive status for logical drives with active spares. -- a very lightweight program to report the status of logical drives on Smart Array controllers and also fibre channel attached MSA1000. Should work on most any linux and FreeBSD (no MSA1000 support for FreeBSD though. Martin Matuska added cciss_vol_status to the FreeBSD ports tree here. Here's what it would take to get MSA1000 support on FreeBSD Feel free to send in a patch.)

      Here's the man page.. This program is licensed under the Gnu GPL v. 2.

    • Arrayprobe (offsite) makes a report of events recorded by Smartarray contollers. Here's a sample report from arrayprobe 2.0.
    • Cpqarrayd: (offsite) "Cpqarrayd is a daemon to monitor HP (compaq) arraycontrollers. It reports any status changes, like failing disks, to the syslog and optionally to a remote host using SNMP traps." This program works by monitoring events from Smartarray controllers, originally written for first generation Compaq array controllers, (those which use the cpqarray driver) but extended to also work with 2nd generation controllers (those which use the cciss driver.) Logs to syslog, and optionally, sends SNMP traps. You can think of this as a daemonized version of arrayprobe, in that both of them detect failures in the same way (by looking at "events" reported by the controller, cpqarrayd in real time, arrayprobe after the fact.)
    • smartmontools -- described on the smartmontools website as "two utility programs (smartctl and smartd) to control and monitor storage systems using the Self-Monitoring, Analysis and Reporting Technology System (SMART) built into most modern ATA and SCSI hard disks."
    • array-info I just found this one, Fri Jun 1 22:29:47 PDT 2007. I can't comment on this much as I haven't tried it, but from my so far very brief perusing of the code it appears to be alright at first glance, basically doing the expected things. (Interestingly, it predates cciss_vol_status, so the authors are to be congratulated for figuring out how to do it despite extremely sketchy to non-existent documentation.) Later, after checking this one out a bit more, I'll edit this to reflect what I find.

    Supported Hardware

    • Smart Array 5300
    • Smart Array 5312
    • Smart Array 532
    • Smart Array 5i
    • Smart Array 6400
    • Smart Array 6400 EM
    • Smart Array 641
    • Smart Array 642
    • Smart Array 6422
    • Smart Array 6i
    • Smart Array E200
    • Smart Array E200i
    • Smart Array E500
    • Smart Array P212
    • Smart Array P400
    • Smart Array P400i
    • Smart Array P410
    • Smart Array P410i
    • Smart Array P411
    • Smart Array P600
    • Smart Array P700m
    • Smart Array P800
    • Smart Array P812
    • MSA 500 G2
    • MSA 20

    Contact: