HP QLA Driver Kit -------------------- This driver kit contains all the drivers and utilities needed to deploy supported HP adapters on Linux The following adapters are supported with this driver kit: Adapter Supported Architectures FCA2214 x86, x86_64 FCA2214DC x86, x86_64 bl20p Mezzanine Card x86 bl25p Mezzanine Card x86_64 bl30p Balcony Card x86 bl35p Balcony Card x86_64 A6826A ia64 A7538A ia64 The following distributions are supported with this driver kit: Distribution Architectures Red Hat Advanced Server 2.1 i386, ia64 Red Hat Enterprise Linux 3.0 i386, ia64, x86_64 SUSE Linux Enterprise Server 8 i386, ia64, x86_64 (Service Pack 3 or higher) SUSE Linux Enterprise Server 9 i386, ia64, x86_64 Red Hat Enterprise Linux 4 i386, ia64, x86_64 This driver kit contains the following components: Scripted RPM for QLA 7.x driver (hp_qla2x00src) Scripted RPM for QLA 8.x driver (hp_qla2x00src) Source RPM for QLA 7.x driver (hp_qla2x00) Source RPM for QLA 8.x driver (hp_qla2x00) Fibre Channel Utilities for x86 architecture (fibreutils) Fibre Channel Utilities for x86_64 architecture (fibreutils) Fibre Channel Utilities for ia64 architectures (fibreutils) Driver parameter configuration script for 2.4 kernels (set_parm2.24) Driver parameter configuration script for 2.6 kernels (set_parm2.26) Master installation utility (INSTALL) Installation The INSTALL script will install the hp_qla2x00src RPM and the fibreutils RPM for your architecture (x86, x86_64, ia64). For a fresh installation, this script takes no arguments and can be invoked by issuing the command: # ./INSTALL By default the driver will set the load time parameter for failover mode depending upon which mode the currently loaded driver is in. If no driver is loaded, the default mode is having failover turned on. If you want to explicitly turn failover on you can use the INSTALL script with the -f option: # ./INSTALL -f You can also install the driver manually using the RPM command. There are two hp_qla2x00src RPMs. One is for kernel 2.4 kernel based distributions (version 7.xx) and one is for 2.6 kernel based distributions (version 8.xx). You can see what kernel version you are running by executing the "uname -r" command. So, based upon which kernel version you are running, use the following commands to install the driver RPM manually: To install the hp_qla2x00src RPM on a fresh system use the command: # rpm -ivh hp_qla2x00src--.linux.rpm To install the hp_qla2x00src RPM without running the driver build scripts: # rpm -ivh --noscripts hp_qla2x00src--.linux.rpm Upgrade If you have any installed components from a previous solution kit or driver kit (such as the qla2x00 RPM) the recommended way fo upgrade everything is to use the INSTALL script without any arguments. # ./INSTALL If you want to manually upgrade the components you should use one of the following commands depending upon which component you are upgrading. Use the following command for the hp_qla2x00src RPM. Note that you should use the 7.x version of hp_qla2x00src for 2.4 kernel based distributions and the 8.x version of hp_qla2x00src for 2.6 kernel based distributions: # rpm -Uvh hp_qla2x00src--.linux.rpm Use the following command for the fibreutils RPM: # rpm -e fibreutils # rpm -ivh fibreutils--.linux..rpm Note on Upgrading from qla2x00 RPMs If you have a qla2x00 RPM from HP installed on your system, you should use the INSTALL script. The INSTALL script will remove the old qla2x00 RPM and install the new hp_qla2x00src while keeping the driver settings from the previous installation. The script takes no arguments. To use it, execute the command: # ./INSTALL ! NOTE: If you are going to use the failover functionality of the QLA driver, you should uninstall Secure Path first before you attempt to upgrade the driver. Failing to do so could cause a kernel panic. Note about Third Party Storage Detection The preinstall portion of the RPM contains code to check for non-HP storage. The reason for doing this is so that the RPM will not overwrite any settings that another vendor may be using. You can skip the detection by setting the environmental variable HPQLA2X00FORCE to y by issuing the following two commands # HPQLA2X00FORCE=y # export HPQLA2X00FORCE or using the -F option of the INSTALL script: # ./INSTALL -F Note about Multiple Installed Kernels If your system has multiple kernels installed on it, you can compile the driver for all the installed kernels by setting the INSTALLALLKERNELS environmental variable to "y" and exporting it by issuing the following commands: # INSTALLALLKERNELS=y # export INSTALLALLKERNELS or using the -a option of the INSTALL script: # ./INSTALL -a Uninstall To uninstall the components from this driver kit you can use the INSTALL script with the -u option: # ./INSTALL -u If you want to manually uninstall all the components or you want to uninstall just one of the components, you should use one or all of the following commands: # rpm -e fibreutils # rpm -e hp_qla2x00 # rpm -e hp_qla2x00src Using the Source RPM In some cases, you may have to build a binary RPM (hp_qla2x00) from the source RPM and use that in place of the scripted RPM (hp_qla2x00src). You will need to do this if your production servers do not have the kernel sources and gcc installed. If you need to build a binary RPM to install, you will need a development machine with the same kernel as the production servers that you will be deploying to. You can then install the binary RPM produced rpm methods on your production servers. Note that the binary RPM that you build will only work for that kernel and configuration that you build on (possibly some errata kernels). Also note that you should use the 7.x version of the hp_qla2x00 source RPM for 2.4 kernel based distributions and the 8.x version of the hp_qla2x00 source RPM for 2.6 kernel based distributions. To create the binary RPM from the source RPM do the following: Issue the command: # ./INSTALL -s -or- 1. Install the source rpm by issuing the command # rpm -ivh hp_qla2x00--.src.rpm 2. Depending on the distribution, change directory to Red Hat: /usr/src/redhat/SPECS SUSE: /usr/src/packages/SPECS 3. Build the RPM by using the rpmbuild command (the rpm command contains the RPM build functionality in some older distributions) using the command: # rpmbuild -bb hp_qla2x00.spec 4. At the end of the command output there should be a line that says "Wrote: ...rpm". This line shows where the binary RPM is. You should copy the binary RPM to the production servers and install it using the command: # rpm -ivh hp_qla2x00--..rpm Contents of hp_qla2x00 and hp_qla2x00src The hp_qla2x00src and hp_qla2x00 RPMs contains the following scripts in the /opt/hp/src/hp_qla2x00src or /opt/hp/hp_qla2x00 directories respectively in addition to the driver source code. condition_kernel sets the kernel source dependencies to reflect the current running kernel or the specified kernel *build_driver builds the QLA driver from source code edit_conf makes the proper edits to system configuration files to imbed the qla2200 and qla2300 modules in the initrd with the proper driver load time parameters make_initrd builds a new initrd using the correct system utilities set_parm sets up the /etc/hp_qla2x00.conf file so that it has the correct driver settings based upon the configuration that the user wants to run and rebuilds the initrd *master.sh runs the condition_kernel, build_driver, edit_conf and make_initrd utilities. Useful to compile a new driver when a new kernel is loaded *compile_all_kernels Runs master.sh for all installed kernels scsi_patch_sles9.bin (For use with SLES 9 only) Corrects the HSV110 entry in scsi_devinfo.c file. It also recompiles scsi_mod.ko and creates a new initrd. toggle_debug_switch toggles the debug flag in the driver source code and rebuilds the driver so that debug output will be sent to /var/log/messages * Only contained in the hp_qla2x00src RPM QLA SDM/HBAAPI Libraries The hp_qla2x00src and hp_qla2x00 RPMs contain the QLA SDM libraries (libqlsdm) for x86, x86_64 and ia64 architectures. This library can be found in /usr/lib as libqlsdm.so. There is also a readme that comes with the library which is located in /opt/hp/src/hp_qla2x00src or /opt/hp/hp_qla2x00 as readme.libqlsdm. Changing Driver Parameters You can change the parameters of the driver using the set_parm script in either the /opt/hp/src/hp_qla2x00src directory or the /opt/hp/hp_qla2x00 directory (depending upon which RPM you have installed). There are three preset settings: 1. Single Path (-s) you are connected through one path to the storage without any redudany 2. Secure Path (-m) you are using the Secure Path software for multipathing and failover 3. QLogic Failover (-x) you are using the multipathing and failover functionality built into the qla2x00 adapter driver You can also manually set the driver parameters if you invoke set_parm with no arguments and select the manual option from the menu. Note that if you change the driver parameters, a new initrd has to be build. This is done by the set_parm script by calling the edit_conf and make_initrd scripts. Notes on Upgrading Kernels 1. After you upgrade your kernel and kernel sources, you can compile new qla2200.o and qla2300.o modules for the new kernel without rebooting. You may need to do this as the new kernel that you just installed may not contain the latest supported HP driver. To do this you should: a. Go to /opt/hp/src/hp_qla2x00src b. Execute the command "./master.sh -l" to get a list of valid module and source directories c. Choose the set of directories that match your new kernel and enter them with the -s and -m switches of the master.sh script for example: master.sh -s linux-2.4.21-9.EL -m linux-2.4.21-9.ELsmp The script should take care of the rest of the compilation automatically. 2. When you upgrade from an old kernel to a new kernel, you may need to manually remove the entry for qla2300_conf from /etc/modules.conf. Having these entries present in /etc/modules.conf may cause the initrd build to fail because those modules may not come with the new kernel. The entries will be replaced and new qla2200_conf and qla2300_conf modules built when you compile a new driver for the new kernel. scsi_patch_sles9.bin This file patches the scsi_devinfo.c source file in the original shipping version of SLES 9 so that it contains the correct device information entry for COMPAQ HSV110. You can run it by going to the /opt/hp/src/hp_qla2x00src or /opt/hp/hp_qla2x00 directory and running the command: # ./scsi_patch_sles9.bin The script will patch the source file, recompile scsi_mod.ko and rebuild the initrd for the current running kernel. NOTE: you will have to reboot for the changes to scsi_mod.ko to take effect Fibre Channel Utilities RPMs The fibre channel utilities RPMs (fibreutils) are a collection of utilities that are used to configure the supported HP HBAs or gather information on them. See the README in /opt/hp/hp_fibreutils for a description of the contents. Array Device Host Type You should set your HP Storage to the following host types so that they work correctly with with HP supported Linux HBAs and drivers: EVA5000 Sun Solaris EVA3000 Sun Solaris MSA1000 Linux MSA1500 Linux XP Host Mode 00 Note on using QLogic Failover with Enterprise Virtual Array (EVA) If you are using the built-in failover functionality of the QLogic driver (version 7.00.03 or later), set the failover preference to Path A Failover or Path B Failover in the Management Appliance host settings. Failure to do so can cause i/o errors when a failover occurs. Note on using QLogic Failover with MSA1000 If you are using the built-in failover functionality of the QLogic driver (version 7.00.03 or later), set the host mode to "Linux". Failure to do so can cause i/o errors when a failover occurs. Note on QLogic Failover and HSG80 based Storage The failover mode of the QLogic driver is not supported on HSG80 controller based storage.