This is an old revision of the document!
Here's the original [“gjournal proposal”].
Gjournal is a layer in the GEOM hierarchy that consumes two lower-layer devices and produces one device. The two lower-layer devices are called data disk and journal disk. The data disk is self-sufficient and (eventually) contains verbatim data that's handled to the layer, so after the journal is disconnected it in itself can be used as a normal storage device. The journal disk contains linear records for every write request handled to the layer.
All information present on this page is ephemeral and unfinished. The end result of the project might be implemented in a totally different way.
The current plan for the journal disk format is that for each IO write request (consisting of N data blocks) this is written to the journal:
- 1 “descriptor” block
- N verbatim data blocks
A list of descriptors for “live records” (those that need to be commited to data disk) is kept in memory to speed up journal replay and enable to mask-out old records that are overwritten by new ones. This list is not written to journal but can be reconstructed from descriptor blocks if needed.
Current plan is to do most of the development in userland as a ggate consumer and then port it to kernel.
Tentative schedule
Serious work will begin somewhere around 2005-07-15, with first results probably available at 2005-08-15. Project finalization is expected sometime around 2005-09-15. Of course bughunting, being such an interesting sport, will continue probably forever :)