[geeks] Versioning FIlesystem

vance at neurotica.com vance at neurotica.com
Fri May 23 20:43:53 CDT 2003


On Fri, 23 May 2003, David A de Gruyl wrote:

> >Doesn't all the automation go out the window if you decide to mount the
> >filesystem on another OS?  I mean, if the versioning is in the spec for
> >the filesystem, then wouldn't a driver for that filesystem in any new
> >OS would have to support it?
>
> If a new filesystem type was created, then the kernel level junk would
> have to be introduced into any OS that intended to read said filesystem.
> But, if it is just UFS or similar with additional cruft, then another OS
> could read it, without the automatic versioning taking place.

What I'm saying is that if the support for versioning is *specified as
required* for the new filesystem, then the kernel level stuff would just
have to be introduced in the new filesystem driver.

> I am sort of torn on which way I would prefer.  I think that the fs
> support should be included in the target OSes, on the one hand.  But the
> ability to read the files on another (unmodified) OS is also valuable.

There's just too much that could go wrong if you allow a user to edit
stuff willy-nilly with no concern about maintaining version integrity.

> If ffs/ext3/or something is used as a base, and the additional
> information is housed in files with the name <name>:0 or something, then
> the userland programs and the system calls related to files would have
> to change, but versioning could be done on a per file basis.  somehow.

I'm not saying that an existing filesystem shouldn't be used as a base.
I'm just saying that it should be intentionally rendered incompatible to
keep people from using, say, an ffs driver to munge versioned files.

> I think that it might be better to make it a mount option for
> filesystem, and if that option is set, then the oddball stuff happens.
> If it is not, then the extra files would look like extra files.  I would
> still like to have extra information in the file attributes for the
> maximum number of revisions to keep, etc.  And to make the revisions be
> kept in the smallest portable diff format rather than as full copies.
> But editing an older version should be editing the applied diff, not the
> diff itself.  Blech.

That's how VMS does it.  It stores complete revisions of files.  Not just
diffs.  I don't agree with making it a mount option, however.  It would
make it far too easy to circumvent version integrity.

> Well, this idea came up from "The Unix Hater's Handbook".  And I noticed
> that it was still fairly unaddressed.  I am starting to understand why.
> Even blessed rm would have to have a new option to actually remove
> files, and not just send them in to old version stasis.  And all the
> fileutils, and find would have to be able to read the version
> information.

What version information specifically?  You would only have a bunch of
files.  find would only need to be modified to match all versions of a
file.  rm would only have to be modified to only remove the latest
version.  Plus, a purge command would probably be necessary.

> In order to make this an integrated part of the operating system, a new
> paradigm for the unix filesystem operations would have to develop.  You
> would have to remember that rm does not work the same on every platform,
> and that you can't always recover old versions.  I think that I (for
> one) could wrap my head around this one.

It's simple.  It's only necessary to have rm remove the last version.
That's simple enough to do with several different approaches.

> And I would want it to work over NFS so that for a first pass the local
> machine would provide the most recent version, but would still provide
> versioning on the local disk.  Maybe a "newnfs" could be set up to
> provide a versioning nfs mount option.  Allowing the remote machine
> access to the less recent version.

That's probably also not bad to do.

> Is it worth the effort to even look into?  Which OS should I look at --
> limited choice of Open/Net/FreeBSD and Linux.  I do not have source code
> licenses for non-free OS.  I am leaning towards OpenBSD, because I
> rarely have spaghetti code problems there.

I would use NetBSD, simply because of the wide hardware support.  You'll
reach a very wide audience very quickly.  It's definitely worth doing, and
I'll help in any way I can.

Peace...  Sridhar



More information about the geeks mailing list