{
    "mode": "man",
    "parameter": "cciss",
    "section": "4",
    "url": "https://www.chedong.com/phpMan.php/man/cciss/4/json",
    "generated": "2026-10-08T09:19:08Z",
    "synopsis": "modprobe cciss [ ccissallowhpsa=1 ]",
    "sections": {
        "NAME": {
            "content": "cciss - HP Smart Array block driver\n",
            "subsections": []
        },
        "SYNOPSIS": {
            "content": "modprobe cciss [ ccissallowhpsa=1 ]\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "Note: This obsolete driver was removed in Linux 4.14, as it is superseded by the hpsa(4) dri‐\nver in newer kernels.\n\ncciss is a block driver for older HP Smart Array RAID controllers.\n",
            "subsections": [
                {
                    "name": "Options",
                    "content": "ccissallowhpsa=1:  This  option prevents the cciss driver from attempting to drive any con‐\ntrollers that the hpsa(4) driver is capable of controlling, which is to say, the cciss driver\nis restricted by this option to the following controllers:\n\nSmart Array 5300\nSmart Array 5i\nSmart Array 532\nSmart Array 5312\nSmart Array 641\nSmart Array 642\nSmart Array 6400\nSmart Array 6400 EM\nSmart Array 6i\nSmart Array P600\nSmart Array P400i\nSmart Array E200i\nSmart Array E200\nSmart Array E200i\nSmart Array E200i\nSmart Array E200i\nSmart Array E500\n"
                },
                {
                    "name": "Supported hardware",
                    "content": "The cciss driver supports the following Smart Array boards:\n\nSmart Array 5300\nSmart Array 5i\nSmart Array 532\nSmart Array 5312\nSmart Array 641\nSmart Array 642\nSmart Array 6400\nSmart Array 6400 U320 Expansion Module\nSmart Array 6i\nSmart Array P600\nSmart Array P800\nSmart Array E400\nSmart Array P400i\nSmart Array E200\nSmart Array E200i\nSmart Array E500\nSmart Array P700m\nSmart Array P212\nSmart Array P410\nSmart Array P410i\nSmart Array P411\nSmart Array P812\nSmart Array P712m\nSmart Array P711m\n"
                },
                {
                    "name": "Configuration details",
                    "content": "To configure HP Smart Array controllers, use  the  HP  Array  Configuration  Utility  (either\nhpacuxe(8) or hpacucli(8)) or the Offline ROM-based Configuration Utility (ORCA) run from the\nSmart Array's option ROM at boot time.\n"
                }
            ]
        },
        "FILES": {
            "content": "",
            "subsections": [
                {
                    "name": "Device nodes",
                    "content": "The device naming scheme is as follows:\n\nMajor numbers:\n\n104   cciss0\n105   cciss1\n106   cciss2\n105   cciss3\n108   cciss4\n109   cciss5\n110   cciss6\n111   cciss7\n\nMinor numbers:\n\nb7 b6 b5 b4 b3 b2 b1 b0\n|----+----| |----+----|\n|           |\n|           +-------- Partition ID (0=wholedev, 1-15 partition)\n|\n+-------------------- Logical Volume number\n\nThe device naming scheme is:\n/dev/cciss/c0d0     Controller 0, disk 0, whole device\n/dev/cciss/c0d0p1   Controller 0, disk 0, partition 1\n/dev/cciss/c0d0p2   Controller 0, disk 0, partition 2\n/dev/cciss/c0d0p3   Controller 0, disk 0, partition 3\n\n/dev/cciss/c1d1     Controller 1, disk 1, whole device\n/dev/cciss/c1d1p1   Controller 1, disk 1, partition 1\n/dev/cciss/c1d1p2   Controller 1, disk 1, partition 2\n/dev/cciss/c1d1p3   Controller 1, disk 1, partition 3\n"
                },
                {
                    "name": "Files in /proc",
                    "content": "The  files /proc/driver/cciss/cciss[0-9]+ contain information about the configuration of each\ncontroller.  For example:\n\n$ cd /proc/driver/cciss\n$ ls -l\ntotal 0\n-rw-r--r-- 1 root root 0 2010-09-10 10:38 cciss0\n-rw-r--r-- 1 root root 0 2010-09-10 10:38 cciss1\n-rw-r--r-- 1 root root 0 2010-09-10 10:38 cciss2\n$ cat cciss2\ncciss2: HP Smart Array P800 Controller\nBoard ID: 0x3223103c\nFirmware Version: 7.14\nIRQ: 16\nLogical drives: 1\nCurrent Q depth: 0\nCurrent # commands on controller: 0\nMax Q depth since init: 1\nMax # commands on controller since init: 2\nMax SG entries since init: 32\nSequential access devices: 0\n\ncciss/c2d0:   36.38GB       RAID 0\n"
                },
                {
                    "name": "Files in /sys",
                    "content": "/sys/bus/pci/devices/dev/ccissX/cXdY/model\nDisplays the SCSI INQUIRY page 0 model for logical drive Y of controller X.\n\n/sys/bus/pci/devices/dev/ccissX/cXdY/rev\nDisplays the SCSI INQUIRY page 0 revision for logical drive Y of controller X.\n\n/sys/bus/pci/devices/dev/ccissX/cXdY/uniqueid\nDisplays the SCSI INQUIRY page 83 serial number for logical drive Y of controller X.\n\n/sys/bus/pci/devices/dev/ccissX/cXdY/vendor\nDisplays the SCSI INQUIRY page 0 vendor for logical drive Y of controller X.\n\n/sys/bus/pci/devices/dev/ccissX/cXdY/block:cciss!cXdY\nA symbolic link to /sys/block/cciss!cXdY.\n\n/sys/bus/pci/devices/dev/ccissX/rescan\nWhen this file is written to, the driver rescans the controller to discover  any  new,\nremoved, or modified logical drives.\n\n/sys/bus/pci/devices/dev/ccissX/resettable\nA  value of 1 displayed in this file indicates that the \"resetdevices=1\" kernel para‐\nmeter (used by kdump) is honored by this controller.  A value of 0 indicates that  the\n\"resetdevices=1\"  kernel  parameter  will not be honored.  Some models of Smart Array\nare not able to honor this parameter.\n\n/sys/bus/pci/devices/dev/ccissX/cXdY/lunid\nDisplays the 8-byte LUN ID used to address logical drive Y of controller X.\n\n/sys/bus/pci/devices/dev/ccissX/cXdY/raidlevel\nDisplays the RAID level of logical drive Y of controller X.\n\n/sys/bus/pci/devices/dev/ccissX/cXdY/usagecount\nDisplays the usage count (number of opens) of logical drive Y of controller X.\n"
                },
                {
                    "name": "SCSI tape drive and medium changer support",
                    "content": "SCSI sequential access devices and medium changer devices are supported and  appropriate  de‐\nvice  nodes are automatically created (e.g., /dev/st0, /dev/st1, etc.; see st(4) for more de‐\ntails.)  You must enable \"SCSI tape drive support for Smart Array 5xxx\" and \"SCSI support\" in\nyour kernel configuration to be able to use SCSI tape drives with your Smart Array 5xxx  con‐\ntroller.\n\nAdditionally,  note  that  the driver will not engage the SCSI core at init time.  The driver\nmust be directed to dynamically engage the SCSI core via the /proc  filesystem  entry,  which\nthe \"block\" side of the driver creates as /proc/driver/cciss/cciss* at run time.  This is be‐\ncause  at driver init time, the SCSI core may not yet be initialized (because the driver is a\nblock driver) and attempting to register it with the SCSI core in such a case would  cause  a\nhang.   This  is  best done via an initialization script (typically in /etc/init.d, but could\nvary depending on distribution).  For example:\n\nfor x in /proc/driver/cciss/cciss[0-9]*\ndo\necho \"engage scsi\" > $x\ndone\n\nOnce the SCSI core is engaged by the driver, it cannot be disengaged (except by unloading the\ndriver, if it happens to be linked as a module.)\n\nNote also that if no sequential access devices or medium changers are detected, the SCSI core\nwill not be engaged by the action of the above script.\n"
                },
                {
                    "name": "Hot plug support for SCSI tape drives",
                    "content": "Hot plugging of SCSI tape drives is supported, with some caveats.  The cciss driver  must  be\ninformed  that  changes  to  the  SCSI  bus  have  been made.  This may be done via the /proc\nfilesystem.  For example:\n\necho \"rescan\" > /proc/scsi/cciss0/1\n\nThis causes the driver to:\n\n(1)  query the adapter about changes to the physical SCSI buses and/or  fiber  channel\narbitrated loop, and\n\n(2)  make note of any new or removed sequential access devices or medium changers.\n\nThe  driver  will output messages indicating which devices have been added or removed and the\ncontroller, bus, target, and lun used to address each device.  The driver then  notifies  the\nSCSI midlayer of these changes.\n\nNote that the naming convention of the /proc filesystem entries contains a number in addition\nto the driver name (e.g., \"cciss0\" instead of just \"cciss\", which you might expect).\n\nNote: Only sequential access devices and medium changers are presented as SCSI devices to the\nSCSI midlayer by the cciss driver.  Specifically, physical SCSI disk drives are not presented\nto  the  SCSI  midlayer.   The only disk devices that are presented to the kernel are logical\ndrives that the array controller constructs from regions on the physical drives.  The logical\ndrives are presented to the block layer (not to the SCSI midlayer).  It is important for  the\ndriver  to prevent the kernel from accessing the physical drives directly, since these drives\nare used by the array controller to construct the logical drives.\n"
                },
                {
                    "name": "SCSI error handling for tape drives and medium changers",
                    "content": "The Linux SCSI midlayer provides an error-handling protocol that is initiated whenever a SCSI\ncommand fails to complete within a certain amount of time (which can vary  depending  on  the\ncommand).   The cciss driver participates in this protocol to some extent.  The normal proto‐\ncol is a four-step process:\n\n(1)  First, the device is told to abort the command.\n\n(2)  If that doesn't work, the device is reset.\n\n(3)  If that doesn't work, the SCSI bus is reset.\n\n(4)  If that doesn't work, the host bus adapter is reset.\n\nThe cciss driver is a block driver as well as a SCSI driver and  only  the  tape  drives  and\nmedium changers are presented to the SCSI midlayer.  Furthermore, unlike more straightforward\nSCSI  drivers,  disk  I/O  continues  through  the  block side during the SCSI error-recovery\nprocess.  Therefore, the cciss driver implements only the first two of these actions,  abort‐\ning  the  command, and resetting the device.  Note also that most tape drives will not oblige\nin aborting commands, and sometimes it appears they will  not  even  obey  a  reset  command,\nthough in most circumstances they will.  If the command cannot be aborted and the device can‐\nnot be reset, the device will be set offline.\n\nIn the event that the error-handling code is triggered and a tape drive is successfully reset\nor  the tardy command is successfully aborted, the tape drive may still not allow I/O to con‐\ntinue until some command is issued that positions the tape to a  known  position.   Typically\nyou  must  rewind the tape (by issuing mt -f /dev/st0 rewind for example) before I/O can pro‐\nceed again to a tape drive that was reset.\n"
                }
            ]
        },
        "SEE ALSO": {
            "content": "hpsa(4), ccissvolstatus(8), hpacucli(8), hpacuxe(8)\n\nhttp://cciss.sf.net,   and   Documentation/blockdev/cciss.txt   and   Documentation/ABI/test‐\ning/sysfs-bus-pci-devices-cciss in the Linux kernel source tree\n\nLinux man-pages 6.7                          2023-10-31                                     cciss(4)",
            "subsections": []
        }
    },
    "summary": "cciss - HP Smart Array block driver",
    "flags": [],
    "examples": [],
    "see_also": [
        {
            "name": "hpsa",
            "section": "4",
            "url": "https://www.chedong.com/phpMan.php/man/hpsa/4/json"
        },
        {
            "name": "ccissvolstatus",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/ccissvolstatus/8/json"
        },
        {
            "name": "hpacucli",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/hpacucli/8/json"
        },
        {
            "name": "hpacuxe",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/hpacuxe/8/json"
        }
    ]
}