rhel

FusionIO ioMemory VSL4 on CentOS/Rhel 7.5

With CentOS 7.5, ioMemory VSL 4.3.3 kernel module would no longer load; I could not get it to recompile from source either. I tried a bunch of things including moving my CentOS 7.5 box to the EL7 4.17 kernel to see if that helped me compile from source, no luck. Then I found a forum post, https://forums.servethehome.com/index.php?threads/centos-7-fusionio-users-do-not-upgrade-to-kernel-3-10-0-862-2-3-el7-yet.19760/ where they speak of patching VSL 3.2.15. Using this and some playing around I got VSL 4.2.1 to work with my system. This method may work for some later versions, yet 4.3.3 had some other code changes that were causing it not to compile, so I used 4.2.1. Below are the steps to get a working ioMemory VSl 4.2.1 for Centos 7.5; comments if it worked or didnt are welcome.
Note: I did all these steps as my user, and not as root. My card is a FusionIO ioMemory SX350
  1. Before we begin, I am assuming you have GCC, kernel-devel, if you do not; go to https://wiki.centos.org/HowTos/I_need_the_Kernel_Source to get kernel and the rpm build parts.
  2. Go to link.sandisk.com, register, and login
  3. Browse to the software download page, https://link-app.sandisk.com/Home/SoftwareDownload
  4. Download the “iomemory-vsl4-4.2.1.1137-1.0.src.rpm” source package
  5. In a terminal, change to the directory you downloaded it to
  6. Extract the contents of the RPM to disk
    1. rpm2cpio iomemory-vsl4-4.2.1.1137-1.0.src.rpm

  7. That gives us some metadata and a tar, extract the contents of the tar.gz file
    1. tar xvzf iomemory-vsl4-4.2.1.1137.tar.gz

  8. Change directory to the kernel modules folder
    1. cd iomemory-vsl4-4.2.1.1137/root/usr/src/iomemory-vsl4-4.2.1/

  9. Using your favorite file editor, edit kblock.c
    1. vim kblock.c

  10. Edit line 2592
    1. Before
      1. elevator_exit(q->elevator);

    2. After
      1. elevator_exit(q, q->elevator);

  11. Save the file, and quit the text editor
  12. Compile the kernel module
    1. make modules

  13. If that completes without errors, then install
    1. sudo make modules_install

  14. Let’s add the module to the running kernel
    1. sudo modprobe iomemory_vsl4

    2. If you have issues, you may need to do “sudo modprobe -r iomemory_vsl4” to force a reload of the module if one was already present
  15. You should now have the fio in /dev/, or after installing the utils from the Sandisk site, see the card under “fio-status”