:> Implement UNDO records, including writing out file data that is about to
:> be overwritten and the mtime prior to a write, rename, or remove. UNDO
:> records allow us to create a reversable journal, where we can wind a mirror
:> forwards or backwards simply by scanning the journal forwards or backwards.
:
:Nice. Very nice.
It's getting there. 95% of the kernel code is operational now. The
only thing left on the kernel side is to possibly add some additional
information to make undo'ing removed hardlinks easier for the userland,
and a few bug fixes.
The big thing now is to work on the userland side (jscan) to be able
to run a mirror backwards, and to work on the code that allows the
userland side to resynchronize after a journaling stream has been
broken and then restarted. It turns out that I outsmarted myself a bit
on the kernel side... the kernel supports journaling transactions running
in parallel and that really complicates the userland code to parse
the transactions. I have to rewrite that whole bit (in userland's jscan).
Once jscan is up to snuff my desired backup scheme will be possible...
that is, keeping an up-to-date mirror on the backup box and using all
remaining disk space to hold the backwards-scannable journal. When the
backup partition fills up, you just remove a chunk from the base of the
journal to make more room.
-Matt
Matthew Dillon
<dillon@xxxxxxxxxxxxx>