There was a lot of stuff wrong with this driver and it was only getting speeds of ~2.5 MB/s. Now 4K blocks get ~17 MB/s which is not good but definitely better. I'm pretty sure the issue is qemu's emulation as 85% of time is spent between sending the command and it to complete. Large blocks are now supported too, qemu with block size 1M gets around 600 MB/s read speeds.