mfi driver performance too bad on LSI MegaRAID SAS 9260-8i

Borja Marcos borjam at
Mon Aug 1 09:56:44 UTC 2016

> On 01 Aug 2016, at 08:45, O. Hartmann <ohartman at> wrote:
> On Wed, 22 Jun 2016 08:58:08 +0200
> Borja Marcos <borjam at> wrote:
>> There is an option you can use (I do it all the time!) to make the card
>> behave as a plain HBA so that the disks are handled by the “da” driver. 
>> Add this to /boot/loader.conf
>> hw.mfi.allow_cam_disk_passthrough=1
>> mfip_load=“YES"
>> And do the tests accessing the disks as “da”. To avoid confusions, it’s
>> better to make sure the disks are not part of a “jbod” or logical volume
>> configuration.
>> Borja.
> [...]
> How is this supposed to work when ALL disks (including boot device) are settled
> with the mfi (in our case, it is a Fujitsu CP400i, based upon LSI3008 and
> detected within FreeBSD 11-BETA and 12-CURRENT) controller itself?
> I did not find any solution to force the CP400i into a mode making itself
> acting as a HBA (we intend to use all drives with ZFS and let FreeBSD
> kernel/ZFS control everything).

Have you tried that particular option? 

With kinda recent LSI based cards you have three options:

- The most usual and definitely NOT RECOMMENDED option is to define a logical volume per disk
which actually LSI Logic called before JBOD mode. It’s not recommended at all if you want to run ZFS.

- Recent cards, I think I saw this first on the LSI3008, have a JBOD mode that exposes the drives as “mfisyspd” devices.
I don’t recommend it either, because the syspd drives are a sort of limited version of a disk device. With SSDs, especially, you
don’t have access to the TRIM command.

- The third option is to make the driver expose the SAS devices like a HBA would do, so that they are visible to the
CAM layer, and disks are handled by the stock “da” driver, which is the ideal solution. 

However, this third option might not be available in some custom firmware versions for certain manufacturers? I don´t
know. And I would hesitate to make the conversion on a production machine unless you have a complete and reliable
full backup of all the data in case you need to rebuild it.

In order to do it you need a couple of things. You need to set the variable hw.mfi.allow_cam_disk_passthrough=1
and to load the mfip.ko module.

When booting installation media, enter command mode and use these commands:

set hw.mfi.allow_cam_disk_passthrough=1
load mfip

Remember that after installation you need to update /boot/loader.conf in the system you just installed with the
following contents:


A note regarding CAM and MFI visibility: On some old firmware versions for the LSI2008 I’ve even seen the disks
available both as “mfi” and “da” drivers. If possible, you should try to set them up as “unconfigured good” on the RAID
firmware. Use the RAID firmware set up or maybe mfiutil(8)

Also, make sure you don’t create any logical volumes on the disks you want exposed to CAM. You should delete
the logical volumes so that the MFI firmware doesn’t do anything with them. 

AND BEWARE: Doing these changes to a system in production with valuable data is dangerous. Make sure you have a full
and sound backup before making these changes.

As a worst case, the card could expose the devices both as “syspd” and CAM (i.e., “da” drives) but as long as you don’t
touch the syspd devices the card won’t do anything to them as far as I know. It could be a serious problem, however, if you 
access a drive part of a logical volume through CAM, as RAID cards tend do to “patrol reads” and other stuff on them. 

Provided it’s safe to do what I recommended, try it and follow up by email. 


More information about the freebsd-current mailing list