Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 26 Apr 2001 16:48:56 -0700
From:      Bakul Shah <bakul@bitblocks.com>
To:        Terry Lambert <tlambert@primenet.com>
Cc:        fs@FreeBSD.ORG, bakul@FreeBSD.ORG
Subject:   Re: versioned files via snapshot evilness. 
Message-ID:  <200104262348.TAA10209@sheffield.cnchost.com>
In-Reply-To: Your message of "Thu, 26 Apr 2001 22:57:59 -0000." <200104262258.PAA09326@usr06.primenet.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
> > > Versioning ala VMS requires kernel globbing, or amazingly
> > > intrusive library modifications, coupled with a guarantee
> > > by programmers that they will only use the preferred APIs
> > > in their applications.
> > 
> > Well... you can do this by treating each file as a directory,
> 
> This is the folded namespace approach.  In the user's "view"
> onto the filesystem, they would see only the "file" name, and
> when they reference the file, they get the most recent version in the directory.

Likely my example was not clear.  The user gets both views:
as a file and a dir, depending on the open mode.  For
example, as a file when you do open("foo",...) and as a dir
when you do open("foo/", ...).  Either a trailing slash or
with an open mode or something to select between the two.

If you want the latest HEAD version  you open "foo".  If you
want a specific version 1.2, you open "foo/1/2".  Should
there be further branching 1.2.{1,2,..n}, opening "foo/1/2"
will automatically give you the latest sub version.  So this
scheme extends very nicely to a tree of versions as opposed
to the '; <version>' scheme which is flat.

> You still need a seperate handler for the namespace escape to do
> the version redirection of the name, or to select the most recent
> version, if no escape is present.  This still leaves you hanging
> out to try over listing all version of the file from the user's
> point of view, as VMS did, without a ";<version>" namespace
> intrusion (as opposed to an escape).

What is wrong with `ls -R foo' if you want to list every
created version and `ls foo/1/2/*' if you want to list all
the same level sub versions of 1.2?

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-fs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200104262348.TAA10209>