You can implement stuff using eBPF and do IO and compute in without leaving the kernel. It’s crazy.
For instance you can perform an on-disk b-tree lookup in the kernel.
These devices are so fast that crossing the kernel boundary becomes the limiting factor.
eBPF is being or already is extended to hook into kernel facilities other than networking. I could see it being used to implement some abstraction onto storage other than POSIX block device or mmap().