Fusion IODrive2 support

cdukes

Renowned Member
Sep 11, 2015
89
9
73
Raleigh, NC
www.logzilla.net
I'm trying to compile the FusionIO drivers based on these instructions:
https://www.thomas-krenn.com/en/wiki/Fusion-io_ioDrive_use_with_Debian
But when I try to run dpkg-buildpackage, I get the following error:

Code:
  CC [M]  /root/iodrive2/iomemory-vsl-3.2.11.1581/driver_source/kscatter.o
/root/iodrive2/iomemory-vsl-3.2.11.1581/driver_source/kfio.c: In function ‘kfio_bind_kthread_to_node’:
/root/iodrive2/iomemory-vsl-3.2.11.1581/driver_source/kfio.c:1074:9: error: implicit declaration of function ‘cpus_weight’ [-Werror=implicit-function-declaration]
         if (cpumask && cpus_weight(*cpumask))
         ^
  CC [M]  /root/iodrive2/iomemory-vsl-3.2.11.1581/driver_source/ktime.o
  CC [M]  /root/iodrive2/iomemory-vsl-3.2.11.1581/driver_source/sched.o
/root/iodrive2/iomemory-vsl-3.2.11.1581/driver_source/kmem.c: In function ‘kfio_vmalloc’:
/root/iodrive2/iomemory-vsl-3.2.11.1581/driver_source/kmem.c:645:5: error: implicit declaration of function ‘vmalloc’ [-Werror=implicit-function-declaration]
     return vmalloc(size);
     ^
/root/iodrive2/iomemory-vsl-3.2.11.1581/driver_source/kmem.c:645:5: warning: return makes pointer from integer without a cast
/root/iodrive2/iomemory-vsl-3.2.11.1581/driver_source/kmem.c: In function ‘kfio_vfree’:
/root/iodrive2/iomemory-vsl-3.2.11.1581/driver_source/kmem.c:661:5: error: implicit declaration of function ‘vfree’ [-Werror=implicit-function-declaration]
     vfree(ptr);
     ^
  CC [M]  /root/iodrive2/iomemory-vsl-3.2.11.1581/driver_source/cdev.o
  CC [M]  /root/iodrive2/iomemory-vsl-3.2.11.1581/driver_source/kblock.o
cc1: some warnings being treated as errors
scripts/Makefile.build:258: recipe for target '/root/iodrive2/iomemory-vsl-3.2.11.1581/driver_source/kmem.o' failed
make[3]: *** [/root/iodrive2/iomemory-vsl-3.2.11.1581/driver_source/kmem.o] Error 1
make[3]: *** Waiting for unfinished jobs....
cc1: some warnings being treated as errors
scripts/Makefile.build:258: recipe for target '/root/iodrive2/iomemory-vsl-3.2.11.1581/driver_source/kfio.o' failed
make[3]: *** [/root/iodrive2/iomemory-vsl-3.2.11.1581/driver_source/kfio.o] Error 1
In file included from /root/iodrive2/iomemory-vsl-3.2.11.1581/driver_source/kblock.c:59:0:
/root/iodrive2/iomemory-vsl-3.2.11.1581/driver_source/kblock.c: In function ‘kfio_dump_bio’:
/root/iodrive2/iomemory-vsl-3.2.11.1581/driver_source/kblock.c:937:53: error: ‘const struct bio’ has no member named ‘bi_cnt’
              msg, bio->bi_max_vecs, atomic_read(&bio->bi_cnt), bio->bi_io_vec,
                                                     ^
/root/iodrive2/iomemory-vsl-3.2.11.1581/driver_source/include/fio/port/dbgset.h:202:58: note: in definition of macro ‘infprint’
 #define infprint(...)  kfio_print(KERN_INFO "fioinf " AT __VA_ARGS__)
                                                          ^
scripts/Makefile.build:258: recipe for target '/root/iodrive2/iomemory-vsl-3.2.11.1581/driver_source/kblock.o' failed
make[3]: *** [/root/iodrive2/iomemory-vsl-3.2.11.1581/driver_source/kblock.o] Error 1
Makefile:1398: recipe for target '_module_/root/iodrive2/iomemory-vsl-3.2.11.1581/driver_source' failed
make[2]: *** [_module_/root/iodrive2/iomemory-vsl-3.2.11.1581/driver_source] Error 2
make[2]: Leaving directory '/usr/src/linux-headers-4.2.2-1-pve'
Makefile:82: recipe for target 'modules' failed
make[1]: *** [modules] Error 2
make[1]: Leaving directory '/root/iodrive2/iomemory-vsl-3.2.11.1581/driver_source'
ERROR:
debian/rules:98: recipe for target 'build-arch-stamp' failed
make: *** [build-arch-stamp] Error 1
dpkg-buildpackage: error: debian/rules build gave error exit status 2

Any idea how I can get this working?
 
This is old but it's the kernel you are using that is incompatible with the fusionio drivers. I don't see any that support 4.2.2.1 (you can see that in the second make[2] line. You'll notice that the vsl driver is for 3.2.11 kernel. I hit the same error on a custom Centos7 with 4.3.3.1

That being said, and I want to WARN that this in NOT SAFE and can easily blow things up so you should not do this on production (try this on a system that can afford to be hosed!). You could try sjuxax hack here - https://github.com/sjuxax/iomemory-vsl but it is NOT SAFE (hopefully I made that super clear). Also the guy who didn't just shared for knowledge, he isn't a Proxmox guy.

Shorter: FusionIO doesn't support the 4.2.2-1-pve kernel you are on, it's too new
 
i have same problem
root@server1:/var/lib/vz/dump/iomemory-vsl-3.2.14.1675# dpkg-buildpackage -rfakeroot -D -B -us -uc
scripts/Makefile.build:258: recipe for target '/var/lib/vz/dump/iomemory-vsl-3.2.14.1675/driver_source/kblock.o' failed
make[3]: *** [/var/lib/vz/dump/iomemory-vsl-3.2.14.1675/driver_source/kblock.o] Error 1
make[3]: *** Waiting for unfinished jobs....
Makefile:1420: recipe for target '_module_/var/lib/vz/dump/iomemory-vsl-3.2.14.1675/driver_source' failed
make[2]: *** [_module_/var/lib/vz/dump/iomemory-vsl-3.2.14.1675/driver_source] Error 2
make[2]: Leaving directory '/usr/src/linux-headers-4.4.35-1-pve'
Makefile:82: recipe for target 'modules' failed
make[1]: *** [modules] Error 2
make[1]: Leaving directory '/var/lib/vz/dump/iomemory-vsl-3.2.14.1675/driver_source'
ERROR:
debian/rules:98: recipe for target 'build-arch-stamp' failed
make: *** [build-arch-stamp] Error 1
dpkg-buildpackage: error: debian/rules build-arch gave error exit status 2
root@server1:/var/lib/vz/dump/iomemory-vsl-3.2.14.1675# debuild -us -uc
-bash: debuild: command not found

Please Any idea how I can get this working?
 
i have same problem
root@server1:/var/lib/vz/dump/iomemory-vsl-3.2.14.1675# dpkg-buildpackage -rfakeroot -D -B -us -uc
scripts/Makefile.build:258: recipe for target '/var/lib/vz/dump/iomemory-vsl-3.2.14.1675/driver_source/kblock.o' failed
make[3]: *** [/var/lib/vz/dump/iomemory-vsl-3.2.14.1675/driver_source/kblock.o] Error 1
make[3]: *** Waiting for unfinished jobs....
Makefile:1420: recipe for target '_module_/var/lib/vz/dump/iomemory-vsl-3.2.14.1675/driver_source' failed
make[2]: *** [_module_/var/lib/vz/dump/iomemory-vsl-3.2.14.1675/driver_source] Error 2
make[2]: Leaving directory '/usr/src/linux-headers-4.4.35-1-pve'
Makefile:82: recipe for target 'modules' failed
make[1]: *** [modules] Error 2
make[1]: Leaving directory '/var/lib/vz/dump/iomemory-vsl-3.2.14.1675/driver_source'
ERROR:
debian/rules:98: recipe for target 'build-arch-stamp' failed
make: *** [build-arch-stamp] Error 1
dpkg-buildpackage: error: debian/rules build-arch gave error exit status 2
root@server1:/var/lib/vz/dump/iomemory-vsl-3.2.14.1675# debuild -us -uc
-bash: debuild: command not found

Please Any idea how I can get this working?

if it has not been updated for modern kernels, it simply won't work. 3.2.14 is "ancient" compared to our current 4.4.x based kernels.
 
  • Like
Reactions: ariunawan2105
on fusion io driver, update version this is. what solution for my problem ?
 

Attachments

  • driver fusion io.png
    driver fusion io.png
    88.5 KB · Views: 18
you have to find a version compatible with PVE's 4.4.x based kernel - please contact the vendor to find out whether this exists and how to get and install it.
 
I´ve talked to the tech support of SanDisk and asked for a driver. They told me, that they will not support Promox and do not know when/if they will support 4.4 Kernels. So I spent some time and used a mix of Ubuntu and Debian sources to compile the driver for the current Proxmox kernel (4.4.49-1-pve) of Proxmox 4.4. The driver works with my ioDrive2 1,2T and shows a block device after installation as supposed.

Due to the upload limit of the forum I uploaded the files to an external server: HERE
Just download, unzip and run:

Code:
dpkg -i iomemory-vsl-4.4.49-1-pve_3.2.14.1677-1.0_amd64.deb
modprobe iomemory-vsl

and install the software utilities:

Code:
cd /tools
dpkg -i fio-preinstall_3.2.14.1675-1.0_amd64.deb
dpkg -i fio-common_3.2.14.1675-1.0_amd64.deb
dpkg -i fio-sysvinit_3.2.14.1675-1.0_all.deb
dpkg -i fio-util_3.2.14.1675-1.0_amd64.deb

Test with:
Code:
fio-status -a
lsblk

The utility should give you detailed information about the drive writes and lsblk should show a new block device.

Cheers :-)