I am not a developer hence have no experience in packaging that stuff Tell me what is needed to progress on this even as a test case. This is totally mock-up manual procedure I have. I was even able to convert debian package to txz and have fio-utils to manage the drive working too.
However simple tricks to create links like sds -> fioa, sds1 -> fioa1 do not make the trick. The drive does not come visible in unassigned devices or array configurator. This is why I started looking at udev mappings to convince the drive to attach as sd* rather than fio*
Steps to get it working as a drive visible to the OS:
1. You need kernel source first 4.19.88 (linux-4.19.88.tar.xz) & the packages from slackware 14.2
- dkms (and all its deps like ncurses in txz format, easy to install with installpkg)
- dev tools plugin to be able to compile
2. Copy .config from existing kernel source to the new one. If you don't set the kernel name correctly which .config does you will end up with insmod complaining about mismatch after io driver build
3. New kernel will be in /usr/src/linux-4.19.88 you need to temporarily move exiting one to old and new one to /usr/src/linux-4.19.88-Unraid so all headers are available for compiling, there is no need to load new kernel at all
4. You need the driver https://github.com/snuf/iomemory-vsl
- Follow dkms steps on GitHub to compile the driver
5. Since /lib/modules is a ro/file as squashfs I took the easy path of copying compiled .ko module to /boot and do /boot/config/go insmod /boot/iomemory-vsl.ko.xz. This is not mature enough to go through building new bzmodules.
6. Register to san disk web page and download fio-util_3.2.15.1700-1.0_amd64.deb, deb2tgz will give txz which you can install with installpkg
This is not doing any tricks:
ln -s /dev/fioa /dev/sds
ln -s /dev/fioa1 /dev/sds1
ln -s /dev/sds /dev/disk/by-id/iodrive
ln -s /dev/sds1 /dev/disk/by-id/iodrive-part1
Not on lsscsi
root@unRAID:/usr/src# lsscsi
[0:0:0:0] disk SanDisk Cruzer Blade 1.00 /dev/sda
[1:0:0:0] disk SEAGATE ST1000NX0323 K002 /dev/sdb
[1:0:1:0] disk SEAGATE ST1000NX0323 K002 /dev/sdc
[1:0:2:0] disk SEAGATE ST1000NX0323 K002 /dev/sdd
[1:0:3:0] disk SEAGATE ST1000NM0023 0004 /dev/sde
[1:0:4:0] disk SEAGATE ST1000NM0023 0004 /dev/sdf
[1:0:5:0] disk ATA CT500MX500SSD1 022 /dev/sdg
but still there and working
root@unRAID:/boot/files# mount /dev/fioa1 /tmp/tmp/
root@unRAID:/boot/files# touch /tmp/tmp/test
root@unRAID:/boot/files# ls -la /tmp/tmp/
total 16
drwxr-xr-x 1 root root 8 Feb 16 21:30 ./
drwxrwxrwt 12 root root 240 Feb 16 21:30 ../
-rw-rw-rw- 1 root root 0 Feb 16 21:30 test
root@unRAID:/boot/files# blkid
/dev/fioa1: UUID="2b299144-f28d-4c06-9884-483586007b02" UUID_SUB="f4b16ba2-5ac7-4162-be24-ee0022d7f0c2" TYPE="btrfs"
root@unRAID:/boot/files# fio-status
Found 1 ioMemory device in this system with 1 ioDrive Duo
Driver version: 3.2.15 build 1700
Adapter: Dual Adapter
640GB High IOPS MLC Duo Adapter for IBM System x, Product Number:81Y4517, SN:90438
External Power: NOT connected
PCIe Power limit threshold: 24.75W
Connected ioMemory modules:
fct0: Product Number:81Y4517, SN:74486
fct0 Attached
IBM ioDIMM 320GB, SN:74486
Located in slot 0 Upper of ioDrive Duo HL SN:90438
PCI:15:00.0
Firmware v7.1.17, rev 116786 Public
320.00 GBytes device size
Internal temperature: 43.31 degC, max 44.30 degC
Reserve space status: Healthy; Reserves: 100.00%, warn at 10.00%
Contained VSUs:
fioa: ID:0, UUID:e6468008-1eeb-439d-addf-624d70706c56
fioa State: Online, Type: block device
ID:0, UUID:e6468008-1eeb-439d-addf-624d70706c56
320.00 GBytes device size
[ 154.804222] <6>fioinf ioDrive 0000:15:00.0: Found device fct0 (640GB High IOPS MLC Duo Adapter for IBM System x 0000:15:00.0) on pipeline 0
[ 155.671053] <6>fioinf 640GB High IOPS MLC Duo Adapter for IBM System x 0000:15:00.0: probed fct0
[ 155.675414] <6>fioinf 640GB High IOPS MLC Duo Adapter for IBM System x 0000:15:00.0: sector_size=512
[ 155.675420] <6>fioinf 640GB High IOPS MLC Duo Adapter for IBM System x 0000:15:00.0: setting channel range data to [2 .. 4095]
[ 155.685856] <6>fioinf 640GB High IOPS MLC Duo Adapter for IBM System x 0000:15:00.0: Found metadata in EBs 2698-3028, loading...
[ 155.805497] <6>fioinf 640GB High IOPS MLC Duo Adapter for IBM System x 0000:15:00.0: setting recovered append point 3028+96796672
[ 155.880346] <6>fioinf 640GB High IOPS MLC Duo Adapter for IBM System x 0000:15:00.0: Creating device of size 320000000000 bytes with 625000000 sectors of 512 bytes (317861 mapped).
[ 155.881689] fioinf enable_discard set but discard not supported on this linux version
[ 155.881701] fioinf 640GB High IOPS MLC Duo Adapter for IBM System x 0000:15:00.0: Creating block device fioa: major: 254 minor: 0 sector size: 512...
[ 155.881984] fioa: fioa1
[ 155.882422] <6>fioinf 640GB High IOPS MLC Duo Adapter for IBM System x 0000:15:00.0: Attach succeeded.
[ 158.627521] md: unRAID driver 2.9.13 installed
[23744.304519] BTRFS: device fsid 2b299144-f28d-4c06-9884-483586007b02 devid 1 transid 5 /dev/fioa1
[23747.038336] BTRFS info (device fioa1): disk space caching is enabled
[23747.038338] BTRFS info (device fioa1): has skinny extents
[23747.038338] BTRFS info (device fioa1): flagging fs with big metadata feature
[23747.040864] BTRFS info (device fioa1): checking UUID tree