From: Chris Snook <csnook@redhat.com>
To: Jack Stone <jack@hawkeye.stone.uk.eu.org>
Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
akpm@linux-foundation.org, viro@zeniv.linux.org.uk,
hpa@zytor.com, alan <alan@clueserver.org>
Subject: Re: Versioning file system
Date: Tue, 19 Jun 2007 14:03:07 -0400 [thread overview]
Message-ID: <46781A5B.9090104@redhat.com> (raw)
In-Reply-To: <46739E89.1080003@hawkeye.stone.uk.eu.org>
Jack Stone wrote:
> Chris Snook wrote:
>> The underlying internal implementation of something like this wouldn't
>> be all that hard on many filesystems, but it's the interface that's the
>> problem. The ':' character is a perfectly legal filename character, so
>> doing it that way would break things.
>
> But to work without breaking userspace it would need to be a character
> that would pass through any path checking routines, ie be a legal path
> character.
>
>> I think NetApp more or less got the interface right by putting a
>> .snapshot directory in each directory, with time-versioned
>> subdirectories each containing snapshots of that directory's contents
>> at those points in time. It keeps the backups under the same
>> hierarchy as the original files, to avoid permissions headaches,
>> it's accessible over NFS without modifying the client at all,
>> and it's hidden just enough to make it hard for users to do something
>> stupid.
>
> My personal implementation idea was to store lots of files for the form
> file:revision_number (I'll keep using that until somebody sugests
> something better) on the file system itself, with a hard link form the
> latest version to file (this is probably not a major imporvement and
> having the hard link coudl make it hard to implement deltas). This could
> mean no changes to the file system itself (except maybe a flag to say
> its versioned). The kernel would then do the translation to find the
> correct file, and would only show the latest version to userapps not
> requesting a specific version.
I pointed out NetApp's .snapshot directories because that's a method that uses
legal path character, but doesn't break anything. With this method, userspace
tools will have to be taught that : is suddenly a special character. Userspace
already knows that files beginning with . are special and treat them specially.
We don't need a new special character for every new feature. We've got one,
and it's flexible enough to do what you want, as proven by NetApp's extremely
successful implementation. Perhaps you want a slightly different interface from
what NetApp has implemented, but what you're suggesting will change the default
behavior of basic tools like tar and ls. This is not a good thing.
>> If you want to do something like this (and it's generally not a bad
>> idea), make sure you do it in a way that's not going to change the
>> behavior seen by existing applications, and that is accessible to
>> unmodified remote clients. Hidden .snapshot directories are one way, a
>> parallel /backup filesystem could be another, whatever. If you break
>> existing apps, I won't touch it with a ten foot pole.
>
> The whole interface would be designed to give existing behavior as
> default for two reasons: users are used to opening a file and getting
> the latest version and not to break userspace. I personally wouldn't
> touch this either if it broke userspace. The only userspace change would
> be the addition of tools to manage the revisions etc. Userspace could
> later upgrade to take advantage of the new functionality but I cannot
> see the worth in breaking it.
But what you're talking about *will* break userspace. If I do an ls in a
directory, and get pages upon pages of versions of just one file, that's broken.
If I tar up a directory and get a tarball that's hundreds of times larger than
it should be, that's broken. If you want the files to be hidden from userspace
applications that don't know about your backup scheme, (and it sounds like you
do) then use the existing convention for hidden files, the prepended '.' This
is the universal sign for "don't mess with me unless you know what you're doing".
-- Chris
next prev parent reply other threads:[~2007-06-19 18:03 UTC|newest]
Thread overview: 106+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-15 22:23 Versioning file system Jack Stone
2007-06-15 22:38 ` H. Peter Anvin
2007-06-15 22:51 ` alan
2007-06-15 22:59 ` H. Peter Anvin
2007-06-15 23:06 ` alan
2007-06-16 8:11 ` Jack Stone
2007-06-16 9:46 ` Jeffrey V. Merkey
2007-06-16 10:12 ` Jeffrey V. Merkey
2007-06-16 13:15 ` Mark Williamson
2007-06-16 19:57 ` Jeffrey V. Merkey
2007-06-16 16:49 ` Jan Harkes
2007-06-16 20:03 ` Jeffrey V. Merkey
2007-06-16 19:38 ` Jack Stone
2007-06-16 20:08 ` Alan Cox
2007-06-16 21:25 ` Jeffrey V. Merkey
2007-06-16 20:39 ` Jan Harkes
2007-06-16 20:43 ` Jack Stone
2007-06-16 22:17 ` Alan Cox
2007-06-17 2:18 ` Jeffrey V. Merkey
2007-06-17 2:39 ` Jeffrey V. Merkey
2007-06-17 22:11 ` Dale Amon
2007-06-16 21:06 ` Dale Amon
2007-06-16 14:53 ` Jörn Engel
2007-06-18 9:45 ` Andreas Dilger
2007-06-18 9:54 ` Jack Stone
2007-06-18 10:13 ` Jörn Engel
2007-06-18 14:01 ` Theodore Tso
2007-06-18 16:16 ` alan
2007-06-18 17:29 ` Theodore Tso
2007-06-18 17:33 ` Jeremy Allison
2007-06-18 20:30 ` Theodore Tso
2007-06-18 20:50 ` J. Bruce Fields
2007-06-18 17:46 ` H. Peter Anvin
2007-07-04 17:32 ` Erik Mouw
2007-07-04 20:47 ` Theodore Tso
2007-07-05 17:55 ` Erik Mouw
2007-07-05 13:57 ` John Stoffel
2007-07-05 14:23 ` Chris Mason
2007-07-05 17:57 ` Erik Mouw
2007-06-18 15:32 ` Chris Mason
2007-06-18 23:18 ` Bron Gondwana
2007-09-29 17:44 ` Sorin Faibish
2007-06-18 15:51 ` Bryan Henderson
2007-06-18 16:37 ` Jack Stone
2007-06-18 16:56 ` H. Peter Anvin
2007-06-18 17:56 ` Bryan Henderson
2007-06-19 3:10 ` Kyle Moffett
2007-06-19 7:49 ` Jack Stone
2007-06-19 7:58 ` Bron Gondwana
2007-06-20 2:43 ` Kyle Moffett
2007-06-19 9:09 ` Martin Langhoff
2007-06-19 16:52 ` Jakub Narebski
2007-06-15 22:52 ` Chris Snook
2007-06-16 8:25 ` Jack Stone
2007-06-19 18:03 ` Chris Snook [this message]
2007-06-19 19:06 ` Jack Stone
2007-06-19 20:03 ` Chris Snook
2007-06-19 20:08 ` Jack Stone
2007-06-19 20:15 ` Chris Snook
2007-06-19 20:27 ` Jack Stone
2007-06-19 20:34 ` John Stoffel
2007-06-19 20:38 ` Jack Stone
2007-06-19 20:38 ` Matthew Wilcox
2007-06-19 21:02 ` John Stoffel
2007-06-19 19:08 ` H. Peter Anvin
2007-06-19 19:12 ` Jack Stone
2007-06-19 19:15 ` H. Peter Anvin
2007-06-19 19:22 ` Jack Stone
2007-06-19 20:10 ` Chris Snook
2007-06-19 20:14 ` Jack Stone
2007-06-19 20:31 ` Chris Snook
2007-06-20 8:34 ` Bernd Petrovitsch
2007-06-19 21:50 ` Alan Cox
2007-06-19 22:07 ` H. Peter Anvin
2007-06-20 8:05 ` Ph. Marek
2007-06-19 20:43 ` Lennart Sorensen
2007-06-19 22:07 ` david
2007-06-19 22:13 ` H. Peter Anvin
2007-06-19 23:07 ` Jan Harkes
2007-06-19 23:12 ` H. Peter Anvin
2007-06-19 22:21 ` Lennart Sorensen
2007-06-19 23:35 ` Bryan Henderson
2007-06-20 0:27 ` Trond Myklebust
2007-06-20 5:00 ` H. Peter Anvin
2007-06-20 17:04 ` Bryan Henderson
2007-06-20 17:10 ` H. Peter Anvin
2007-06-20 17:33 ` Chris Snook
2007-06-15 22:57 ` Kok, Auke
2007-06-15 23:01 ` alan
[not found] <8wst3-3kh-31@gated-at.bofh.it>
[not found] ` <8wsCC-3wf-21@gated-at.bofh.it>
[not found] ` <8wsW4-3UY-3@gated-at.bofh.it>
[not found] ` <8wJal-3KA-1@gated-at.bofh.it>
[not found] ` <8xm22-4Ql-1@gated-at.bofh.it>
[not found] ` <8xq5G-32l-7@gated-at.bofh.it>
[not found] ` <8xs7w-69W-21@gated-at.bofh.it>
2007-06-18 20:54 ` Bodo Eggert
2007-06-18 21:08 ` alan
2007-06-18 21:31 ` H. Peter Anvin
2007-06-18 21:34 ` Jeremy Allison
2007-06-18 22:10 ` Theodore Tso
2007-06-18 22:26 ` Jörn Engel
2007-06-18 21:24 ` Brad Boyer
2007-06-19 3:15 ` Kyle Moffett
2007-06-18 22:34 ` Jeremy Allison
2007-06-18 22:56 ` alan
2007-06-19 7:01 ` Theodore Tso
2007-06-18 22:48 ` Jeremy Allison
2007-06-18 23:00 ` alan
2007-06-19 7:05 ` Theodore Tso
2007-06-19 16:52 ` Jeremy Allison
2007-06-19 16:56 ` H. Peter Anvin
2007-06-18 22:47 ` alan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=46781A5B.9090104@redhat.com \
--to=csnook@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=alan@clueserver.org \
--cc=hpa@zytor.com \
--cc=jack@hawkeye.stone.uk.eu.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).