You can see it here. As I mentioned in my update last night, it works well enough to extract and build – but not run – iozone. That was the milestone I had previously established for making the code available, but I’d like to make sure one thing is very clear.

This is not code to use. This is code to study and hack on. I wouldn’t even use it myself for anything but coding practice. It’s incomplete, unreliable, and slow.

Here are some more specifics on what’s wrong with it.

  • Incomplete: no delete/rename, no maintenance of owner or permissions, no truncate, file-size limits, …
  • Unreliable: unchecked return values, probably memory leaks, and so on. You will definitely hit race conditions in the Thrift code if you forget to use the “-s” (single-threaded) flag for the FUSE daemon. Who would have thought that code would be even lamer than my own? Well, it is, and not just because of that.
  • Slow: the code rewrites inodes and superblocks way too often, does way too much copying (thanks again to Thrift.

All that said – and when I’m so critical of everything else out there how could I be any less critical of my own work? – I still think it’s kind of cool. It’s neat being able to store and manipulate data as Plain Old Files even though the backing store is about as much unlike a Plain Old Disk as you’re ever going to see, with a minimum of configuration fuss as well. I’m going to set it aside for a while now, mostly because I’m having plenty of fun solving some not-entirely-unrelated problems during the day now, but the next time I feel like doing some hobby programming there are all sorts of interesting things left to do with this code. Maybe someone else will even look at it and get some ideas.