I'll be honest, I don't understand what Sprites are, or why they need their own kind of block device. All of the pain seems to come back to trying to map a linux filesystem running on a block device into an object store. They could just ... not do that?
Here's why they do:
https://fly.io/blog/design-and-implementation/
But it feels like maybe they made the wrong tradeoff here.