ATTO Support
Troubleshooting, Tips & FAQs

    Home » Support » Troubleshooting » Linux


I can only see 2 TB of my > 2 TB array

The ATTO Celerity Fibre Channel, ExpressPCI SCSI, ExpressSAS SAS/SATA adapters and Linux all support volumes larger than 2 TB. In order to create a volume larger than 2 TB, 16 byte CDB's must be supported by the drive or array. The OS looks for a 05h in byte 2 of the Inquiry Data to determine whether a device supports SCSI specification SPC-3. Also, the volume label must be set to "GBT" as the first step to creating partitions on that volume. (Rev 10/15/2008)

Java Support Resources

Java is a computing platform that enables applications to run in almost any computer or device. Available for Windows, Macintosh, Linux and UNIX operating systems, the Java Runtime Environment (JRE) allows you to take advantage of the benefits of Java-enabled applications. Several ATTO applications, including the ATTO Configuration Tool, are Java-enabled. As such, the Sun version of Java must be installed on your computer for these applications to run. Java is available for download at the Java technology website (www.java.com). This site also provides a wealth of technical support resources to help you if needed. Also see Java_Installation_Notes.pdf (Rev 11/10/2008)

Booting Linux from a drive attached to ATTO Fibre Channel, SAS or SCSI adapters is not supported

Linux drivers for ATTO Celerity Fibre Channel, ExpressSAS SAS/SATA, and ExpressPCI SCSI adapters are compiled and loaded as modules rather than built into the kernel. Due to this and the wide variety of kernels and Linux distributions, booting from a drive attached to these adapters is not generally supported. Linux should be installed to an ATA or SATA drive and the appropriate ATTO driver for Linux should be installed and loaded from that drive. Boot drivers have been generated for several distributons and kernel versions. If you need a boot driver, please contact ATTO Technical Support with your desired kernel version for availability. (Rev 10/15/2008)

Red Hat or SUSE running 2.6.25 kernel, make file error

Kernel version 2.6.25 release has broken all ATTO product Linux drivers. Please use 2.6.24 on earlier kernels until this has been resolved. (Rev 5/1/2008)

Note: as/of 4/30/2008, the currently posted Linux drivers for ATTO host adapters have been tested with x32 and x64 kernel versions up to 2.6.24. Please contact ATTO Tech Support to see if there is a beta driver for newer kernels. (Rev 5/1/2008)


Linux tips – General

For those of you new to Linux, the command line terminal in all Linux distributions provide "tab" completion. This means you can start typing a folder name or file name and hit the "TAB" key to have the terminal complete the file or folder name for you. If you do not know what files or folders are in the directory, you can hit tab 2 times to show the contents. In some of the examples below, you will notice the use of the double <TAB> to find the contents of a folder.

Remember that Linux is case sensitive. This means if you are trying to navigate to a folder called "Drivers" and you enter "cd drivers" in terminal, the command will fail because a capital "D" was not used for "Drivers". This is also true for tab completion. If you type "cd d<TAB>", the "Drivers" folder will not show up as an option. Only files and folders that start will a lower case "d" will appear as options.

BE CAREFUL! Since Linux is case sensitive, you could then have 2 files or folders with the same name but in different cases. For example, you could have 2 folders in the root directory called "Drivers" and "drivers" and they would be treated as 2 different folders.

Viewing DRIVER OPTIONS/PARAMETERS:

The nice thing about the ATTO driver in Linux is that you can view driver parameters and statistics without having to open a registry editor, configuration tool, or CLI Tools. The following is a brief overview of some common Linux terminal commands that can be used to view ATTO driver information and basic Linux SCSI information. The Linux terminal is recommended as it provides much more information than Linux GUI applications. The terminal also allows users to easily build scripts using these commands.

Open a terminal in your Linux distribution. Type "ls /proc/scsi/". This folder location contains HBA node and SCSI device information. If an ATTO adapter is installed in the system and the adapter driver has been successfully built and loaded, then the driver name will be listed as a folder in this directory. ATTO driver names are as follows:

  • esashba (driver name for ATTO 3G ESAS HBA products)
  • esas2hba (driver name for ATTO 6G ESAS HBA products)
  • esasraid (driver name for ATTO 3G ESAS RAID products)
  • esas2raid (driver name for ATTO 6G ESAS RAID products)
  • celerityfc (driver name for ATTO 4G Celerity HBA products)
  • celerity8fc (driver name for ATTO 8G Celerity HBA products)
  • express2 (driver name for ATTO UL4D and UL5D SCSI HBA products)

Using the proper driver name, you can view the driver parameters that were used when the driver was loaded. Also, there are some valuable statistics that can be seen as well. To view these driver parameters and statistics, open a terminal window and type:
cat /proc/scsi/<DRIVER_NAME> <TAB> <TAB> shows Linux assigned adapter port numbers.

Example:
cat /proc/scsi/<DRIVER_NAME> <TAB> <TAB> shows Linux assigned adapter port numbers.

Example:
linux-vh9j:~ #cat /proc/scsi/esashba/
6 ATTONode

By hitting <TAB> <TAB> after typing the path, we learn that there is an ESASHBA node at number 6. We can now use this number to view the driver parameters and statistics by entering "6" to the end of the "cat /proc/scsi/esashba/" line. For example:

linux-vh9j:~ # cat /proc/scsi/esashba/6
ATTO ExpressSAS Adapter
Driver version 1.21
Flash version 10/22/2009
Firmware version 4.8.1.0
Copyright 2001-2010
http://www.attotech.com

Driver Parameters:

sgl_page_size=384, num_targets=256, disable_wide_ports=0, event_log_mask=0x00000001, num_sg_lists=1024, cmd_per_lun=7, can_queue=128, sg_tablesize=128, atto_max_sectors=65535, cmd_retry_count=20, io_time_out=30, change_notification=1, bind_to_phys=0

Adapter Information:

Model: ATTO ExpressSAS H30F SAS Address: 50010860:0011F300

Discovered Devices:
# TargID SAS Address
1 0 50010860:001005C0
2 1 50010860:001005C1
3 2 50010860:001005C2
4 3 50010860:001005C3
5 4 50010860:001005C4
6 5 50010860:001005C5
7 6 50010860:001005C6
8 7 50010860:001005C7
9 8 50010860:001005C8
10 9 50010860:001005C9
11 10 50010860:001005CA
12 11 50010860:001005CB
13 12 50010860:001005D8
14 255 50010860:001005D9

Statistics:
Time elapsed (ms): 41566
Commands completed: 996
Outstanding commands: 0
Max outstanding commands: 11

Notice that the output from top to bottom includes driver version, flash version, firmware version, current driver parameter values, adapter information, discovered devices, and driver statistics (including the current number of "Outstanding commands" and "Max outstanding commands").

You can reset the max outstanding commands value with the following command:
echo reset-stats > /proc/scsi/esashba/6

You can also view ATTO driver parameters using the following command: modinfo <ATTO_DRIVER>
i.e. modinfo esashba

Setting Driver Options/Parameters

The nice thing about Linux is that you can unload the driver, change a NVRAM setting then reload it with the new settings without rebooting the host. BUT you may want to reboot the host after loading/unloading the driver many times as each time you load the driver, it wastes memory space.

There are 3 methods that can be used in Linux to set ATTO driver parameters in Linux.

  1. Set parameters when manually loading driver via "modprobe" command. This method is temporary and will not stay persistent upon boot. Therefore, this method is only recommended for temporary changes.

    HOW TO:
    1. Unload the ATTO driver in use by issuing:
      rmmod esashba
      OR
      modprobe –r esashba

      NOTE: These commands may fail if another module is using the ATTO driver. Use "lsmod" command to see if ATTO driver is "used by" other modules. You may need to unload the other modules before removing the ATTO driver module.

    2. Reload ATTO driver with new driver options by issuing:
      modprobe <ATTO_DRIVER_NAME> <OPTION_1> <OPTION_2> etc…
      i.e. modprobe esashba event_log_mask=0xfffff7ff num_targets=128
      The driver will now load with the specified parameters. The set parameters will be set back to the original settings upon reboot.

  2. Set parameters via "modprobe.conf" file. This method is more permanent will stay persistent upon system reboot.

    HOW TO:
    1. Navigate to "/etc/" system folder and find "modprobe.conf" file. Open the file in a text editor.

    2. To specify driver options, add the following line to the file:
      options <ATTO_DRIVER_NAME> option1 option2 option3… etc.
      i.e. options esashba event_log_mask=0xfffff7ff num_targets=128

      DO NOT PUT OPTIONS ON DIFFERENT LINES! THEY MUST BE ON THE SAME LINE OR YOU RUN THE RISK OF SOME OPTIONS NOT BEING LOADED. ALSO, A CARRIAGE RETURN IS REQUIRED AT THE END OF THE FILE… SO HIT ENTER AFTER YOU ADD A LINE TO modprobe.conf.

      NOTE: Some Linux systems prefer that "modprobe.conf" is not modified. In these cases, the "modprobe.conf" file will notify the user not to modify the file and will point to "modprobe.conf.local" file to add parameters.

    3. Reboot the system.
  3. Set parameters in ATTO source code. This method is completely permanent and requires the user to build the driver after modifying the source code. Please contact ATTO support for details if this is a requirement.
Enabling ATTO driver advanced Event logging

All ATTO drivers log events into the Linux system logs ("dmesg" and "/var/log/messages" file). For debugging purposes, ATTO technical support may request that you enable advanced logging in the driver in order to have more events outputted to the Linux system logs. To do this, simply change the default value (1) of the driver parameter "event_log_mask" to a value of "-1" or "0xfffff7ff (both settings get the same result). Refer to above instructions on how to set driver parameters. After you change this parameter, more events will be logged to the system logs.

Miscellaneous helpful Linux commands
  • The following terminal command will list all currently pending I/O
    in the system log (dmesg) including IO size in bytes:
    echo debug-dump-queues > /proc/scsi/<ATTO_DRIVER>/<ATTO_NODE#>
  • i.e. echo debug-dump-queues > /proc/scsi/esashba/6
  • The following command will show all SCSI targets that Linux currently can see:
    cat /proc/scsi/scsi
  • The following command will show all partitions that Linux currently can see:
    cat /proc/partitions
  • The following command will show all of the loaded modules and number of processes using each module:
    Lsmod
ATTO Express2 SCSI HBAs in Red Hat 5.5 and SLES (SUSE) 11

In both Red Hat version 5.5 and SLES 11 Linux versions, there is now built-in support for the LSI U320 SCSI chip in a driver called MPTSPI. If present, this driver will load automatically for the ATTO UL4D and/or UL5D SCSI adapters and must be removed ("rmmod mptspi") before our driver can be loaded.

The MPTSPI driver cannot be deleted from the system as it is compiled with each distribution's kernel. You can "blacklist" the MPTSPI driver so that it will not load upon boot. This will allow the ATTO driver to load on boot after installation. The following procedures can be used to blacklist the LSI driver:

Red Hat 5.5 and SLES 11:
  1. Build ATTO driver using "install.sh" script. Do not attempt to load the driver.
  2. Open the following file in a text editor for editing:
    /etc/modprobe.d/blacklist
  3. At the end of the blacklist file, add the following lines:
    # Blacklist LSI SCSI drivers (taking over ATTO SCSI HBA drivers)
    blacklist mptspi
  4. Save the file and reboot. The ATTO driver should load and you can confirm this in terminal by typing "lsmod" and looking for "express2". You can also use "lsmod" to confirm that the 3 LSI drivers did not load.
All ATTO HBA and RAID adapters in SLES (SUSE) 11

SLES 11 by default does not allow "unsupported" (a.k.a. "tainted") modules to be loaded. "Unsupported" modules means that the driver is (A) Not open source and/or (B) Not qualified by Novell. When a driver is not open source, Novell will not mark the driver's "compatible" bit. When this compatible bit is not set, then SUSE assumes that the driver is "tainted" and subsequently, the driver is not allowed to load in the OS.

ATTO drivers are not open source drivers and therefore, Novell will not mark the driver's "compatible" bit. Because the "compatible" bit is not set in our driver, the driver will not be allowed to load in SLES 11. To change SLES 11 default behavior in order to allow ATTO drivers to load, follow these instructions:

  1. Open the following file in a text editor for editing:
    /etc/modprobe.d/unsupported-modules
  2. At the end of the "unsupported-modules file" there should be a line that looks like the following:
    allow_unsupported_modules 1

    Change the "1" to a "0" and save the file. The new line should look like the following:
    allow_unsupported_modules 0

  3. Reboot then follow ATTO driver instructions to install ATTO driver.
Configuring Java for Configuration tool:
  1. Download and install the latest version of Java from the SUN website (http://www.java.com). ATTO recommends installing the BIN version over the RPM package as the BIN procedure is easier to use. The following instructions are recommended by ATTO for installing the JAVA BIN package:
    1. Make java directory
      mkdir –p /usr/java
    2. Save java BIN file to this directory.
    3. Change to java directory in terminal
      cd /usr/java
    4. Determine if BIN file is executable.
      ls –l
      Look for "x" in the file characteristics.
    5. If BIN file not executable, make it so...
      chmod a+x
      <BIN_FILE_NAME>
    6. Execute BIN file and follow prompts to install Java.
      ./<BIN_FILE_NAME>

      NOTE: Refer to SUN installation instructions for more details or troubleshooting.

  2. When Java installation is complete, type the following in terminal:
    alternatives --install <LINK> <NAME> <PATH> <PRIORITY>

    where:
    <LINK> = /usr/bin/java
    <NAME> = java
    <PATH> = Path to Java installation (i.e. /usr/java/jre1.6.0-14/bin/java)
    <PRIORITY> = 0

    If this installs successfully, it will just return to a command prompt with no other messages.

    (NOTE: In SUSE 11 "alternatives" is now "update-alternatives". All other ATTO supported Linux versions use "alternatives".)

  3. Type the following in terminal:
    alternatives --config java

    You will be prompted to enter the number of the java installation you would like to use. Find the version you just installed and enter the number associated with it.

    For example:
    [root]# alternatives --config java
    There are 2 programs which provide 'java'.

    Selection Command
    *+ 1 /usr/lib/jvm/jre-1.4.2-gcj/bin/java
    2 /usr/lib/jvm/jre1.6.0/bin/java

    Enter to keep the current selection[+], or type selection number: 2
    [root]#

  4. Download and Install Configuration tool
    1. Insert the Installation CD into a CD or DVD drive.
    2. In the File Browser window, browse to /mnt/cdrom/Linux/Configuration Tool
    3. Double click lnx_app_configtool_XXX.bin.
    4. Follow the on-screen instructions until the installation completes.
ATTO 6Gb ESAS HBA & Linux kernel 2.6.33

In Linux kernel 2.6.33 and higher, there is now built-in support for the PMC 8001 chip in a driver called pm8001.ko. If present, this driver will load automatically for the ATTO 6gb HBA and must be removed ("rmmod pm8001") before our driver can be loaded.

As of May 2010, the only Linux distribution currently using this kernel is Fedora Core 12. If you would like to permanently remove the PMC driver, you can try deleting the built-in driver, which is probably located at: /lib/modules/2.6.33-default/kernel/drivers/scsi/pm8001/pm8001.ko

NOTE: This location may not be valid for all Linux distributions using this kernel version.