Skip to content

HBA info

Atsushi Abe edited this page May 6, 2021 · 3 revisions

Performance improvement of the sg device

You can improve performance to change parameters of the sg driver below. But this option may cause I/O error reported as #144 in some HBAs.

allow_dio=1

In RHEL7, you can put following file as /etc/modprobe.d/sg.conf.

options sg allow_dio=1

A reboot is required for these settings to take effect.

At this time, we know following HBA's works correctly.

  • QLogic 8Gb FC HBAs

And following HBA's doesn't work correctly.

  • ATTO ExpressSAS H680
  • Emulex FC HBAs (Some drivers work but some drivers dont work, see this section)

Note for the lpfc driver (Emulex Fibre HBAs)

In the lpfc driver (for Emulex Fibre HBAs), the table size of the scatter-gather is 64 by default. This configuration may cause I/O errors intermittently when allow_dio=1 is set and scatter-gather table cannot be reserved. To avoid this error, you need to change the parameter lpfc_sg_seg_cnt to 256 or greater like below.

options lpfc lpfc_sg_seg_cnt=256

A reboot is required for these settings to take effect.

In some versions of the lpfc driver (for Emulex Fibre HBAs), the table size of the scatter-gather cannot be changed correctly. You can check the value is changed or not in sg_tablesize value in /proc/scsi/sg/debug. If you don't have a correct value (256 or greater) in sg_tablesize, removing allow_dio=1 configuration of the sg driver is strongly recommended.

Note for buggy HBAs

LTFS doesn't support the HBAs which doesn't handle the transfer length of SCSI data by default. The reason is because the safety of the data but LTFS provides a option to relax this limitation.

You can use such kind of HBAs if you run the configure script with --enable-buggy-ifs option and build.

List of the HBA --enable-buggy-ifs is needed is below.

HBA's work with --enable-buggy-ifs option on configure script

Vendor Model OS
HighPoint RocketRAID 2722 SAS Controller macOS
ATTO ExpressSAS H680 Linux
N/A USB - SAS converter Linux

IBM lin_tape driver support

You need to add --enable-lintape as an argument of ./configure script if you want to build the backend for lin_tape. You also need to add DEFAULT_TAPE=lin_tape if you set the lin_tape backend as default backend.