The only user in your final tree seems to be the loop driver, and even that one only uses the helper for read/write bios. I think something like this would be much simpler in the end:
The recently submitted nvme-tcp host driver should also be a user of this. Does it make sense to keep it as a helper then?