Hi,
I thought I'd give a quick update on where I've got to with my current block hacking. I've experimentally added a "mirage-block" virtual package to my opam fork:
It's a bit like the "mirage" package; it comes in two flavours: "mirage-block-unix" and "mirage-block-xen".
Higher-level libraries like "fat-filesystem" (also in my fork) depend on "mirage-block" and the correct version should be installed depending on whether you're working on "mirage-unix" or "mirage-xen".
Inside mirage-platform itself, I've added an experimental block driver registration facility common to both unix and xen:
My plan is to modify the mirage-skeleton webserver example to read its resources from a fat-filesystem on a block device. Stuff left to do includes:
1. adjust mirage-block-xen to use the new BLOCK_DEVICE signature
2. figure out if there's any way of hiding the "register" step (otherwise all clients have to remember to register their block devices)
3. fix mirage-block-unix on OSX (currently broken due to use of Linux ioctls)
4. make the unix examples in fat-filesystem conditionally compile (they won't work on xen)
Separately I've been working on Jon Ludlam's LVM library, refactoring it to use the same BLOCK_DEVICE signature as everything else. Part of this involves creating a simple on-disk persistent queue (like the existing shared-memory-ring). Perhaps this will be useful for something else in future.
Cheers,
--
Dave Scott