* Authoring a versioning plugin
@ 2006-01-11 22:59 Yoanis Gil Delgado
2006-01-12 4:09 ` Hans Reiser
2006-01-12 18:14 ` Peter van Hardenberg
0 siblings, 2 replies; 24+ messages in thread
From: Yoanis Gil Delgado @ 2006-01-11 22:59 UTC (permalink / raw)
To: reiserfs-List
This are the intentions:
To write a versioning plugin that will allows the file system user to easily
revert the files under versioning to a some previous state. The plugin will
allow to revert the file state, based on revisions number and date
modifications(and not sure about this one). There will be a special pseudo
file named "previous" that will return the previous version of the file. The
final result should allow to the the following actions:
$ echo 1 > myfile.txt (let's say we make this command at Wed Jan 11 16:53:55)
$ echo 2 > myfile.txt (let's say we make this command at Wed Jan 11 16:54:57)
$ echo 3 >> myfile.txt (let's say we make this command at Wed Jan 11 16:55:59)
Suppose you want the latest version, then you type:
$ cat myfile/.../previous
Some other content
Or you want the n-th version, then you type:
$ cat myfile/.../1
Some content
$ cat myfile/.../2
Some other content
$ cat myfile/.../3
Some other content
Some more content
$
Or the version nearest to some date, then you type:
$ cat myfile.txt/.../Wed\ Jan\ 11\ 16:50
Some other content
Also , there will be an special attribute named under_versioning(or something
like that), that will tell if the file is under versioning. This plugin will
not track directories version, although it's a future plan(I think this
should be mixed with some undelete plugin).
I'm planning to use a delta techniques for versioning storage (delta
compression). The versioning will be at the write level. The versions will be
saved in a special directory under the filesystem. I think the hard part is
the one related to detecting the changes (a COW it's a possible solution, but
i think it's to expensive). I'm thinking a possible solution will be
detecting the bytes changing in each write and archiving then as the
difference. This introduce some problems like :
1-) What happens if the file shrinks?
2-) What happens if the file grows ?
I will send another email with a solution to this problems.
I've also plans to extent the documentantion of plugins creation in reiser4
with the experiences of this project. I'll be working in this plugin for more
than 4 months. If you're interested you're welcome to the the team(just me
right now :D )
Well....... I think this is all (for now :D ). Please let me know what you
think.
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Authoring a versioning plugin
2006-01-11 22:59 Authoring a versioning plugin Yoanis Gil Delgado
@ 2006-01-12 4:09 ` Hans Reiser
2006-01-12 6:44 ` Hans Reiser
2006-01-12 18:14 ` Peter van Hardenberg
1 sibling, 1 reply; 24+ messages in thread
From: Hans Reiser @ 2006-01-12 4:09 UTC (permalink / raw)
To: Yoanis Gil Delgado; +Cc: reiserfs-List
Yoanis Gil Delgado wrote:
>This are the intentions:
>To write a versioning plugin that will allows the file system user to easily
>revert the files under versioning to a some previous state. The plugin will
>allow to revert the file state, based on revisions number and date
>modifications(and not sure about this one). There will be a special pseudo
>file named "previous" that will return the previous version of the file. The
>final result should allow to the the following actions:
>
>$ echo 1 > myfile.txt (let's say we make this command at Wed Jan 11 16:53:55)
>$ echo 2 > myfile.txt (let's say we make this command at Wed Jan 11 16:54:57)
>$ echo 3 >> myfile.txt (let's say we make this command at Wed Jan 11 16:55:59)
>
>Suppose you want the latest version, then you type:
>$ cat myfile/.../previous
>
>
"...." not "..." ;-)
> Some other content
>Or you want the n-th version, then you type:
>$ cat myfile/.../1
> Some content
>$ cat myfile/.../2
> Some other content
>$ cat myfile/.../3
> Some other content
> Some more content
>$
>Or the version nearest to some date, then you type:
>$ cat myfile.txt/.../Wed\ Jan\ 11\ 16:50
> Some other content
>
>Also , there will be an special attribute named under_versioning(or something
>like that), that will tell if the file is under versioning. This plugin will
>not track directories version, although it's a future plan(I think this
>should be mixed with some undelete plugin).
>
>
How about using myfile/..../1 ;-)
>I'm planning to use a delta techniques for versioning storage (delta
>compression).
>
Ok, good.
> The versioning will be at the write level.
>
Please make two plugins, one of which is the default, and for which
versioning occurs only when you touch myfile/..../checkin, and the other
occurs with each change. I am skeptical that having it occur with every
write is desirable actually.
> The versions will be
>saved in a special directory under the filesystem. I think the hard part is
>the one related to detecting the changes (a COW it's a possible solution, but
>i think it's to expensive). I'm thinking a possible solution will be
>detecting the bytes changing in each write and archiving then as the
>difference. This introduce some problems like :
>1-) What happens if the file shrinks?
>2-) What happens if the file grows ?
>
>
Please consider that myfile/..../checkin will be less work to code.
>I will send another email with a solution to this problems.
>
>I've also plans to extent the documentantion of plugins creation in reiser4
>with the experiences of this project. I'll be working in this plugin for more
>than 4 months. If you're interested you're welcome to the the team(just me
>right now :D )
>
>
>Well....... I think this is all (for now :D ). Please let me know what you
>think.
>
>
This all seems great!
>
>
>
>
>
>
>
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Authoring a versioning plugin
2006-01-12 4:09 ` Hans Reiser
@ 2006-01-12 6:44 ` Hans Reiser
2006-01-12 16:33 ` Jonathan Briggs
[not found] ` <200601121434.54881.fred@lab.matcom.uh.cu>
0 siblings, 2 replies; 24+ messages in thread
From: Hans Reiser @ 2006-01-12 6:44 UTC (permalink / raw)
To: Hans Reiser, Yoanis Gil Delgado; +Cc: reiserfs-List
Hans Reiser wrote:
>:
>
>
>
> I am skeptical that having it occur with every
>write is desirable actually.
>
>
Consider the case where you type cat file1 >> file2. This will produce
a version of file2 for every 4k that is in file1, because (well I didn't
look at the bash source, but I would guess) it appends in 4k incremental
writes rather than one big write. Versioning on file close makes more
sense, but I suggest manual control using the ..../checkin pseudofile,
and then we can reasonably make it the default plugin for the whole FS
(write it so that it calls the other plugins so that when we change the
other plugins we don't need to change your code to do it). People who
don't want versioning will simply never touch the checkin pseudofile.
Make sure that for that case there is just an if statement condition
check as overhead, and there will be no reason to not make versioning
the default plugin that happens to do nothing unless you use the checkin
pseudofile at least once during the life of the file.
hmm, maybe ..../snap is better than ..../checkin ? Well, let's decide
that once the code is written....;-)
Do you agree with my points here?
Hans
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Authoring a versioning plugin
2006-01-12 6:44 ` Hans Reiser
@ 2006-01-12 16:33 ` Jonathan Briggs
2006-01-12 18:33 ` Bedros Hanounik
[not found] ` <200601121434.54881.fred@lab.matcom.uh.cu>
1 sibling, 1 reply; 24+ messages in thread
From: Jonathan Briggs @ 2006-01-12 16:33 UTC (permalink / raw)
To: Hans Reiser; +Cc: Yoanis Gil Delgado, reiserfs-List
[-- Attachment #1: Type: text/plain, Size: 850 bytes --]
On Wed, 2006-01-11 at 22:44 -0800, Hans Reiser wrote:
> Hans Reiser wrote:
> > I am skeptical that having it occur with every
> >write is desirable actually.
> >
> >
> Consider the case where you type cat file1 >> file2. This will produce
> a version of file2 for every 4k that is in file1, because (well I didn't
> look at the bash source, but I would guess) it appends in 4k incremental
> writes rather than one big write. Versioning on file close makes more
> sense
[snip]
Not that my opinion means anything. :-) But I agree with Hans that file
close is the place to create the new version. The plugin should track
the writes (and mmap flushes) between file open and close, then on file
close it can process everything into a reverse binary diff to save
permanently.
--
Jonathan Briggs <jbriggs@esoft.com>
eSoft, Inc.
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Authoring a versioning plugin
2006-01-11 22:59 Authoring a versioning plugin Yoanis Gil Delgado
2006-01-12 4:09 ` Hans Reiser
@ 2006-01-12 18:14 ` Peter van Hardenberg
[not found] ` <200601121439.09483.fred@lab.matcom.uh.cu>
` (2 more replies)
1 sibling, 3 replies; 24+ messages in thread
From: Peter van Hardenberg @ 2006-01-12 18:14 UTC (permalink / raw)
To: reiserfs-list; +Cc: Yoanis Gil Delgado
Hi Yoanis, good to see you're still pursuing this.
On January 11, 2006 02:59 pm, Yoanis Gil Delgado wrote:
> This are the intentions:
> To write a versioning plugin that will allows the file system user to
> easily revert the files under versioning to a some previous state. The
> plugin will allow to revert the file state, based on revisions number and
> date modifications(and not sure about this one). There will be a special
> pseudo file named "previous" that will return the previous version of the
> file. The final result should allow to the the following actions:
>
> $ echo 1 > myfile.txt (let's say we make this command at Wed Jan 11
> 16:53:55) $ echo 2 > myfile.txt (let's say we make this command at Wed Jan
> 11 16:54:57) $ echo 3 >> myfile.txt (let's say we make this command at Wed
> Jan 11 16:55:59)
>
> Suppose you want the latest version, then you type:
> $ cat myfile/.../previous
> Some other content
> Or you want the n-th version, then you type:
> $ cat myfile/.../1
> Some content
> $ cat myfile/.../2
> Some other content
> $ cat myfile/.../3
This is going to clutter the ... directory rather a lot. Instead of adding
more files into "...." (which, by the way, is completely obscure) I would
suggest you create a new pseudo directory.
Perhaps:
$ cat myfile/.^4/history/previous
$ cat myfile/.^4/history/version/1
still not quite right, but at least it contains a bit more information about
what the "1" refers to.
> Some other content
> Some more content
> $
> Or the version nearest to some date, then you type:
> $ cat myfile.txt/.../Wed\ Jan\ 11\ 16:50
> Some other content
There are already userspace tools which can determine the file creation date.
Just use those, instead of dealing with date parsing in kernel-space. Date
parsing is a way, WAY more subtle problem than you want to deal with. To see
a group that has spent some time on it, check out the Date::Parser for Perl.
Using "grep" or "find", or "ls" or whatever other tool will accomplish this in
a much more thorough and Unix-consistent way and also save you a pile of
coding time. Believe me, you're going to need it.
>
> Also , there will be an special attribute named under_versioning(or
> something like that), that will tell if the file is under versioning. This
> plugin will not track directories version, although it's a future plan(I
> think this should be mixed with some undelete plugin).
>
I imagine that attribute should be
$ echo "1" > myfile.txt/..../plugins/versioning
or
$ echo "everywrite" > myfile.txt/..../plugins/versioning
Unfortunately, my experience is that you cannot use "echo" to change the data
in the plugins/* pseudoplugins, even when it should be legal to do so. I just
had a little ruby script that looked roughly like this:
f = open pseudofile;
f.write('newplugin');
f.close;
Never had the time to figure out why that was necessary, but there it is.
(There is a comment on the plugin-wiki gotchas section.)
> I'm planning to use a delta techniques for versioning storage (delta
> compression). The versioning will be at the write level. The versions will
> be saved in a special directory under the filesystem. I think the hard part
> is the one related to detecting the changes (a COW it's a possible
> solution, but i think it's to expensive). I'm thinking a possible solution
> will be detecting the bytes changing in each write and archiving then as
> the difference. This introduce some problems like :
> 1-) What happens if the file shrinks?
> 2-) What happens if the file grows ?
>
> I will send another email with a solution to this problems.
This will not be easy, I look forward to seeing your solution.
>
> I've also plans to extent the documentantion of plugins creation in reiser4
> with the experiences of this project. I'll be working in this plugin for
> more than 4 months. If you're interested you're welcome to the the
> team(just me right now :D )
Well, I have my own fish to fry, but I hope you will document your experiences
on the Reiser4 programmer's wiki, currently housed at:
http://pvh.ca/trac/wiki/reiser4
There is lots of important information there for new Reiser4 plugin
developers, and it will continue to grow as time goes by.
> Well....... I think this is all (for now :D ). Please let me know what you
> think.
I would second Hans' suggestion about a "..../version/snapshot" file which
would essentially act like a "cvs commit" on that file. I'd suggest that
there be two similar versioning plugins, one which automatically versions
after each write, and one which only does it when explicitly asked to. See
the fibration plugin type for an example of this.
-p
--
Peter van Hardenberg (pvh@pvh.ca)
Victoria, BC, Canada
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Authoring a versioning plugin
2006-01-12 16:33 ` Jonathan Briggs
@ 2006-01-12 18:33 ` Bedros Hanounik
[not found] ` <200601121502.32227.fred@lab.matcom.uh.cu>
2006-01-12 21:48 ` David Masover
0 siblings, 2 replies; 24+ messages in thread
From: Bedros Hanounik @ 2006-01-12 18:33 UTC (permalink / raw)
To: Jonathan Briggs; +Cc: Hans Reiser, Yoanis Gil Delgado, reiserfs-List
[-- Attachment #1: Type: text/plain, Size: 2128 bytes --]
I think versioning plugin is a great idea and I bet there're many people
like me waiting for such a plugin. However, I have few questions;
what happens when I delete a file? should I loose all history of the file
with such action?
if there's an undelete plugin, what kind of hooks needed so undelete
recovers the full state of the file with history.
another concern is backup; if I backup the file or the entire directory (or
drive), is it transparent to the backup app, or something extra needed to be
done to backup the history of the file?
if you store all the history in a sub direcotry let's say .rev and make it
generic (and hence visible) to everyone, the above problems will go away.
for example filename.ext deltas could be stored in .rev/filename-
rev-date-time.delta with base rev in .rev/filename-rev-date-time.ext
correct me if I'm missing something, because I don't know the plugin
mechanism of reiser4.
-B
On 1/12/06, Jonathan Briggs <jbriggs@esoft.com> wrote:
>
> On Wed, 2006-01-11 at 22:44 -0800, Hans Reiser wrote:
> > Hans Reiser wrote:
> > > I am skeptical that having it occur with every
> > >write is desirable actually.
> > >
> > >
> > Consider the case where you type cat file1 >> file2. This will produce
> > a version of file2 for every 4k that is in file1, because (well I didn't
> > look at the bash source, but I would guess) it appends in 4k incremental
> > writes rather than one big write. Versioning on file close makes more
> > sense
> [snip]
>
> Not that my opinion means anything. :-) But I agree with Hans that file
> close is the place to create the new version. The plugin should track
> the writes (and mmap flushes) between file open and close, then on file
> close it can process everything into a reverse binary diff to save
> permanently.
> --
> Jonathan Briggs <jbriggs@esoft.com>
> eSoft, Inc.
>
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.2 (GNU/Linux)
>
> iD8DBQBDxoTGG8fHaOLTWwgRAkE0AJ9qn75iDGZTgO+KpOEcVVqOuT8mgwCcDYyy
> BHWE+E4oBHkabjZZHNIoAqM=
> =Vtbo
> -----END PGP SIGNATURE-----
>
>
>
[-- Attachment #2: Type: text/html, Size: 2583 bytes --]
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Authoring a versioning plugin
2006-01-12 20:05 ` Yoanis Gil Delgado
@ 2006-01-12 19:13 ` Mike Benoit
0 siblings, 0 replies; 24+ messages in thread
From: Mike Benoit @ 2006-01-12 19:13 UTC (permalink / raw)
To: Yoanis Gil Delgado; +Cc: reiserfs-List
[-- Attachment #1: Type: text/plain, Size: 1941 bytes --]
On Thu, 2006-01-12 at 15:05 -0500, Yoanis Gil Delgado wrote:
> On Thursday 12 January 2006 02:34 pm, you wrote:
> > On Thursday 12 January 2006 01:44 am, you wrote:
> > > Hans Reiser wrote:
> > > >
> > > >
> > > > I am skeptical that having it occur with every
> > > >write is desirable actually.
> > > >
> > >
> > > Consider the case where you type cat file1 >> file2. This will produce
> > > a version of file2 for every 4k that is in file1, because (well I didn't
> > > look at the bash source, but I would guess) it appends in 4k incremental
> > > writes rather than one big write. Versioning on file close makes more
> > > sense, but I suggest manual control using the ..../checkin pseudofile,
> > > and then we can reasonably make it the default plugin for the whole FS
> > > (write it so that it calls the other plugins so that when we change the
> > > other plugins we don't need to change your code to do it). People who
> > > don't want versioning will simply never touch the checkin pseudofile.
> > > Make sure that for that case there is just an if statement condition
> > > check as overhead, and there will be no reason to not make versioning
> > > the default plugin that happens to do nothing unless you use the checkin
> > > pseudofile at least once during the life of the file.
> > >
> > > hmm, maybe ..../snap is better than ..../checkin ? Well, let's decide
> > > that once the code is written....;-)
> > >
> > > Do you agree with my points here?
> >
> Yes I agree with your points. Still, i will like that some files have auto
> versioning.
Would you be able to enable auto versioning for an entire directory,
including all new files created in it? For instance I would like to
enable auto versioning on the /etc/ directory, so I can always track
changes to config files.
Also I assume it will track which UID makes the change?
--
Mike Benoit <ipso@snappymail.ca>
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Authoring a versioning plugin
[not found] ` <200601121434.54881.fred@lab.matcom.uh.cu>
@ 2006-01-12 20:05 ` Yoanis Gil Delgado
2006-01-12 19:13 ` Mike Benoit
0 siblings, 1 reply; 24+ messages in thread
From: Yoanis Gil Delgado @ 2006-01-12 20:05 UTC (permalink / raw)
To: Yoanis Gil Delgado, reiserfs-List
On Thursday 12 January 2006 02:34 pm, you wrote:
> On Thursday 12 January 2006 01:44 am, you wrote:
> > Hans Reiser wrote:
> > >
> > >
> > > I am skeptical that having it occur with every
> > >write is desirable actually.
> > >
> >
> > Consider the case where you type cat file1 >> file2. This will produce
> > a version of file2 for every 4k that is in file1, because (well I didn't
> > look at the bash source, but I would guess) it appends in 4k incremental
> > writes rather than one big write. Versioning on file close makes more
> > sense, but I suggest manual control using the ..../checkin pseudofile,
> > and then we can reasonably make it the default plugin for the whole FS
> > (write it so that it calls the other plugins so that when we change the
> > other plugins we don't need to change your code to do it). People who
> > don't want versioning will simply never touch the checkin pseudofile.
> > Make sure that for that case there is just an if statement condition
> > check as overhead, and there will be no reason to not make versioning
> > the default plugin that happens to do nothing unless you use the checkin
> > pseudofile at least once during the life of the file.
> >
> > hmm, maybe ..../snap is better than ..../checkin ? Well, let's decide
> > that once the code is written....;-)
> >
> > Do you agree with my points here?
>
Yes I agree with your points. Still, i will like that some files have auto
versioning.
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Authoring a versioning plugin
[not found] ` <200601121439.09483.fred@lab.matcom.uh.cu>
@ 2006-01-12 20:06 ` Yoanis Gil Delgado
0 siblings, 0 replies; 24+ messages in thread
From: Yoanis Gil Delgado @ 2006-01-12 20:06 UTC (permalink / raw)
To: Yoanis Gil Delgado, reiserfs-List
On Thursday 12 January 2006 02:39 pm, you wrote:
> On Thursday 12 January 2006 01:14 pm, you wrote:
> > > I'm planning to use a delta techniques for versioning storage (delta
> > > compression). The versioning will be at the write level. The versions
> > > will be saved in a special directory under the filesystem. I think the
> > > hard part is the one related to detecting the changes (a COW it's a
> > > possible solution, but i think it's to expensive). I'm thinking a
> > > possible solution will be detecting the bytes changing in each write
> > > and archiving then as the difference. This introduce some problems
> > > like : 1-) What happens if the file shrinks?
> > > 2-) What happens if the file grows ?
> > >
> > > I will send another email with a solution to this problems.
> >
> > This will not be easy, I look forward to seeing your solution.
>
Well this is one of the interesting part of the projects. I will not start
from scratch, since there is previous work on this area (the delta file
system for example, although it's a little old).
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Authoring a versioning plugin
[not found] ` <200601121502.32227.fred@lab.matcom.uh.cu>
@ 2006-01-12 20:08 ` Yoanis Gil Delgado
0 siblings, 0 replies; 24+ messages in thread
From: Yoanis Gil Delgado @ 2006-01-12 20:08 UTC (permalink / raw)
To: Yoanis Gil Delgado, reiserfs-List
On Thursday 12 January 2006 03:02 pm, you wrote:
Please remember the plugin it's in an earlier design phase, and the answers
> can change, but right now this is what I think:
> > I think versioning plugin is a great idea and I bet there're many people
> > like me waiting for such a plugin. However, I have few questions;
> >
> > what happens when I delete a file? should I loose all history of the file
> > with such action?
>
I think the history should go away too, since history will be stored as
deltas.
>
> > if there's an undelete plugin, what kind of hooks needed so undelete
> > recovers the full state of the file with history.
>
Undelete plugin is for future work. right now I'm thinking that if there
is mechanism to track down the versioning info of a file no matter the
directory it's located, then this should not be a problem.
> > another concern is backup; if I backup the file or the entire directory
> > (or drive), is it transparent to the backup app, or something extra
> > needed to be done to backup the history of the file?
>
don't know right now. will come with more answers on next days.
>
> > if you store all the history in a sub direcotry let's say .rev and make
> > it generic (and hence visible) to everyone, the above problems will go
> > away.
> >
> > for example filename.ext deltas could be stored in .rev/filename-
> > rev-date-time.delta with base rev in .rev/filename-rev-date-time.ext
>
But what happens if i type:
$ mv filename.ext ../
then the entire file revision tree must be copied. that's why i mention the
idea of mechanism to track down the versioning info of a file.
>
> > correct me if I'm missing something, because I don't know the plugin
> > mechanism of reiser4.
Thanks a lot for the questions.
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Authoring a versioning plugin
2006-01-12 18:33 ` Bedros Hanounik
[not found] ` <200601121502.32227.fred@lab.matcom.uh.cu>
@ 2006-01-12 21:48 ` David Masover
2006-01-12 22:43 ` Bedros Hanounik
1 sibling, 1 reply; 24+ messages in thread
From: David Masover @ 2006-01-12 21:48 UTC (permalink / raw)
To: Bedros Hanounik
Cc: Jonathan Briggs, Hans Reiser, Yoanis Gil Delgado, reiserfs-List
Bedros Hanounik wrote:
> I think versioning plugin is a great idea and I bet there're many people
> like me waiting for such a plugin. However, I have few questions;
>
> what happens when I delete a file? should I loose all history of the
> file with such action?
Depends. Delete has always been a modification of the directory, not
the file. So, if you were versioning an entire directory tree
(recursively, of course), then deleting a single file within that tree
would be a modification to its parent directory. Until the
changelog/history/old versions of the parent directory all disappear,
there will be a link to the file, meaning the file still behaves exactly
as it always did, it's just that instead of only being linked to in
foo/bar
it's now in
foo/.../version/1234/bar
[...]
> if you store all the history in a sub direcotry let's say .rev and make
> it generic (and hence visible) to everyone, the above problems will go
> away.
Only now you have some new problems:
What if someone wants to make a .rev for something else? '...' was
carefully selected, and is still debated. Now you're suggesting each
plugin be able to have its own file/directory in every normal directory?
NO. Will not work.
What might work is creating a '.metadata-archive' directory, which has
hardlinks to everything tar is allowed to backup from '...' -- that way,
we only need to come up with one more unique name than we already have.
Technically, not even that -- we could hide a directory with any name we
like inside '...', and let tar archive '...', but not, say, '.../notar',
but that's a hassle for users. Anyone have a better name for
'.metadata-archive', though?
You also have another problem: You've just broken 'rm -r' and 'mv'
across partitions/devices. Consider: Am I allowed to remove
'.metadata-archive'? If yes, then what happens when I look for it
again? Is it magically still there? And if no, how am I supposed to
ever be able to rmdir a directory that's technically not empty? Should
that just magically work?
I suspect that we'd be fine if we just say that removing it should
pretend to work (return an OK status), and rmdir should actually work,
but it should always show up in the directory listing, because I can't
think of why a program would step through the directory listing,
unlinking each file, and then get another directory listing, to make
sure they're all gone, before it tried 'rmdir'-ing the directory. It
makes no sense -- you try to 'rmdir', and you complain to the user if
"directory not empty" because someone stuck a new file in the dir while
you were trying to delete it.
> for example filename.ext deltas could be stored in .rev/filename-
> rev-date-time.delta with base rev in .rev/filename-rev-date-time.ext
I don't like your semantics. I just don't.
It makes sense to use file extensions for fibration, because you can
guess that '.o' files are similar to each other. Same with '.c' files.
But fibration is completely transparent, and just affects performance,
so it's ok to guess there.
When it comes to actually affecting semantics, file extensions have
always been irrelevant except to programs that care, and those programs
only care about their own extensions.
For instance, say I have
foo.tar.bz2
Obviously, this way looks bad:
foo.tar-rev-date-time.delta
foo.tar-rev-date-time.bz2
So do we do it this way?
foo-rev-date-time.delta
foo-rev-date-time.tar.bz2
No, because then what if you have this?
foo.01.12.2006.tar.bz2
Obviously, this is wrong:
foo-rev-date-time.delta
foo-rev-date-time.01.12.2006.tar.bz2
And this is just as wrong as it was before:
foo.01.12.2006.tar-rev-date-time.delta
foo.01.12.2006.tar-rev-date-time.bz2
And for that matter, what if I have these?
foo.tbz2
foo.zip
Both become foo.delta.
And just a minor thing, but you're also making the limit on filenames
just that much more restrictive.
Instead, I suggest we do it this way:
foo/.../version/<rev>
with symlinks to some handy versions of
foo/.../version/<date>
foo/.../version/<time>
This should also work if foo is a directory. So to actually publish a
given revision, you do
tar -cjSf foo-1234.tar.bz2 foo/.../1234
Now, what about forking? If we had good copy-on-write support, we could
just do something like
cp --cow foo/.../1234 foo-fork
Obviously, this would use the same underlying mechanism of copy-on-write
that is used for the versioning system, so there's no need for the
system itself to know about forks.
What about merges? I don't know, but my knowledge of existing
versioning systems is pretty limited...
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Authoring a versioning plugin
2006-01-12 18:14 ` Peter van Hardenberg
[not found] ` <200601121439.09483.fred@lab.matcom.uh.cu>
@ 2006-01-12 21:58 ` David Masover
2006-01-13 20:34 ` Hans Reiser
2 siblings, 0 replies; 24+ messages in thread
From: David Masover @ 2006-01-12 21:58 UTC (permalink / raw)
To: Peter van Hardenberg; +Cc: reiserfs-list, Yoanis Gil Delgado
Peter van Hardenberg wrote:
> Hi Yoanis, good to see you're still pursuing this.
>
> On January 11, 2006 02:59 pm, Yoanis Gil Delgado wrote:
> I would second Hans' suggestion about a "..../version/snapshot" file which
> would essentially act like a "cvs commit" on that file. I'd suggest that
> there be two similar versioning plugins, one which automatically versions
> after each write, and one which only does it when explicitly asked to. See
> the fibration plugin type for an example of this.
Sounds good. I'd propose a third: auto-versioning with optional
commits. Every commit nukes all previous auto-verisons and adds a
long-term version. That is:
The file
foo/.../version/1234
would be the version before
foo/.../version/auto/1
And if you committed
foo/.../version/auto/5678
it would become
foo/.../version/1235
and
foo/.../version/auto/*
would be nuked.
That way, you can protect yourself from doing something extremely
stupid, such as "rm file", without having to go back to a manual
version, while at the same time having a sane set of manual versions
(where you know you didn't do something *that* stupid) to keep your disk
usage sane, and to make it easier to go back and find something that
genuinely was a previous version, and not just an "oops, the cat stepped
on the keyboard and nuked all my changes" version.
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Authoring a versioning plugin
2006-01-12 21:48 ` David Masover
@ 2006-01-12 22:43 ` Bedros Hanounik
[not found] ` <200601121856.00665.fred@lab.matcom.uh.cu>
2006-01-13 16:43 ` David Masover
0 siblings, 2 replies; 24+ messages in thread
From: Bedros Hanounik @ 2006-01-12 22:43 UTC (permalink / raw)
To: David Masover
Cc: Jonathan Briggs, Hans Reiser, Yoanis Gil Delgado, reiserfs-List
[-- Attachment #1: Type: text/plain, Size: 5498 bytes --]
David,
I appreciate your criticism, but we're not in a flame war. I never claimed
to be an FS expert. Take it easy; you don't have to beat my suggestion to
death. There's no perfect solution, and all feedbacks, no matter how idiotic
or simple may seem, help making a better final solution.
my suggestions were burst of the moment, I didn't give 'em much thoughts;
however, all the problems you found could be fixed. Again, I'm not the FS
expert here.
-B
On 1/12/06, David Masover <ninja@slaphack.com> wrote:
>
> Bedros Hanounik wrote:
> > I think versioning plugin is a great idea and I bet there're many people
> > like me waiting for such a plugin. However, I have few questions;
> >
> > what happens when I delete a file? should I loose all history of the
> > file with such action?
>
> Depends. Delete has always been a modification of the directory, not
> the file. So, if you were versioning an entire directory tree
> (recursively, of course), then deleting a single file within that tree
> would be a modification to its parent directory. Until the
> changelog/history/old versions of the parent directory all disappear,
> there will be a link to the file, meaning the file still behaves exactly
> as it always did, it's just that instead of only being linked to in
>
> foo/bar
>
> it's now in
>
> foo/.../version/1234/bar
>
> [...]
>
> > if you store all the history in a sub direcotry let's say .rev and make
> > it generic (and hence visible) to everyone, the above problems will go
> > away.
>
> Only now you have some new problems:
>
> What if someone wants to make a .rev for something else? '...' was
> carefully selected, and is still debated. Now you're suggesting each
> plugin be able to have its own file/directory in every normal directory?
>
> NO. Will not work.
>
> What might work is creating a '.metadata-archive' directory, which has
> hardlinks to everything tar is allowed to backup from '...' -- that way,
> we only need to come up with one more unique name than we already have.
>
> Technically, not even that -- we could hide a directory with any name we
> like inside '...', and let tar archive '...', but not, say, '.../notar',
> but that's a hassle for users. Anyone have a better name for
> '.metadata-archive', though?
>
> You also have another problem: You've just broken 'rm -r' and 'mv'
> across partitions/devices. Consider: Am I allowed to remove
> '.metadata-archive'? If yes, then what happens when I look for it
> again? Is it magically still there? And if no, how am I supposed to
> ever be able to rmdir a directory that's technically not empty? Should
> that just magically work?
>
> I suspect that we'd be fine if we just say that removing it should
> pretend to work (return an OK status), and rmdir should actually work,
> but it should always show up in the directory listing, because I can't
> think of why a program would step through the directory listing,
> unlinking each file, and then get another directory listing, to make
> sure they're all gone, before it tried 'rmdir'-ing the directory. It
> makes no sense -- you try to 'rmdir', and you complain to the user if
> "directory not empty" because someone stuck a new file in the dir while
> you were trying to delete it.
>
> > for example filename.ext deltas could be stored in .rev/filename-
> > rev-date-time.delta with base rev in .rev/filename-rev-date-time.ext
>
> I don't like your semantics. I just don't.
>
> It makes sense to use file extensions for fibration, because you can
> guess that '.o' files are similar to each other. Same with '.c' files.
> But fibration is completely transparent, and just affects performance,
> so it's ok to guess there.
>
> When it comes to actually affecting semantics, file extensions have
> always been irrelevant except to programs that care, and those programs
> only care about their own extensions.
>
> For instance, say I have
>
> foo.tar.bz2
>
> Obviously, this way looks bad:
>
> foo.tar-rev-date-time.delta
> foo.tar-rev-date-time.bz2
>
> So do we do it this way?
>
> foo-rev-date-time.delta
> foo-rev-date-time.tar.bz2
>
> No, because then what if you have this?
>
> foo.01.12.2006.tar.bz2
>
> Obviously, this is wrong:
>
> foo-rev-date-time.delta
> foo-rev-date-time.01.12.2006.tar.bz2
>
> And this is just as wrong as it was before:
>
> foo.01.12.2006.tar-rev-date-time.delta
> foo.01.12.2006.tar-rev-date-time.bz2
>
> And for that matter, what if I have these?
>
> foo.tbz2
> foo.zip
>
> Both become foo.delta.
>
> And just a minor thing, but you're also making the limit on filenames
> just that much more restrictive.
>
> Instead, I suggest we do it this way:
> foo/.../version/<rev>
>
> with symlinks to some handy versions of
> foo/.../version/<date>
> foo/.../version/<time>
>
> This should also work if foo is a directory. So to actually publish a
> given revision, you do
>
> tar -cjSf foo-1234.tar.bz2 foo/.../1234
>
> Now, what about forking? If we had good copy-on-write support, we could
> just do something like
>
> cp --cow foo/.../1234 foo-fork
>
> Obviously, this would use the same underlying mechanism of copy-on-write
> that is used for the versioning system, so there's no need for the
> system itself to know about forks.
>
> What about merges? I don't know, but my knowledge of existing
> versioning systems is pretty limited...
>
[-- Attachment #2: Type: text/html, Size: 6146 bytes --]
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Authoring a versioning plugin
[not found] ` <200601121856.00665.fred@lab.matcom.uh.cu>
@ 2006-01-12 23:56 ` Yoanis Gil Delgado
2006-01-13 20:59 ` Hans Reiser
0 siblings, 1 reply; 24+ messages in thread
From: Yoanis Gil Delgado @ 2006-01-12 23:56 UTC (permalink / raw)
To: Yoanis Gil Delgado, reiserfs-List
On Thursday 12 January 2006 06:56 pm, you wrote:
> David,
>
> I appreciate your criticism, but we're not in a flame war. I never
> claimed to be an FS expert. Take it easy; you don't have to beat my
> suggestion to death. There's no perfect solution, and all feedbacks, no
> matter how idiotic or simple may seem, help making a better final
> solution.
>
> my suggestions were burst of the moment, I didn't give 'em much thoughts;
> however, all the problems you found could be fixed. Again, I'm not the FS
> expert here.
>
> -B
Yes I agree with you Bedros, but i don't think David wanted to beat your
suggestion to death. You're suggestions make me thinks things I have not
preview. As you say the idea it's to find a good solution.
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Authoring a versioning plugin
2006-01-12 22:43 ` Bedros Hanounik
[not found] ` <200601121856.00665.fred@lab.matcom.uh.cu>
@ 2006-01-13 16:43 ` David Masover
1 sibling, 0 replies; 24+ messages in thread
From: David Masover @ 2006-01-13 16:43 UTC (permalink / raw)
To: Bedros Hanounik
Cc: Jonathan Briggs, Hans Reiser, Yoanis Gil Delgado, reiserfs-List
Bedros Hanounik wrote:
> David,
>
> I appreciate your criticism, but we're not in a flame war. I never
> claimed to be an FS expert. Take it easy; you don't have to beat my
> suggestion to death. There's no perfect solution, and all feedbacks, no
> matter how idiotic or simple may seem, help making a better final solution.
I didn't mean this to be a personal attack, or a flame. I was trying to
be thorough, not confrontational.
You did actually have a good idea -- the '.rev' -- but I just wanted to
make sure that if it was done, it would be done right. Notice also that
my last paragraph on that topic was how I think it should be done right
-- which isn't that different than your idea.
> Again, I'm
> not the FS expert here.
Nor am I. Just a fan, really.
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Authoring a versioning plugin
2006-01-12 18:14 ` Peter van Hardenberg
[not found] ` <200601121439.09483.fred@lab.matcom.uh.cu>
2006-01-12 21:58 ` David Masover
@ 2006-01-13 20:34 ` Hans Reiser
2006-01-13 21:17 ` Toomas Laasik
2006-01-13 23:00 ` Jonathan Sailor
2 siblings, 2 replies; 24+ messages in thread
From: Hans Reiser @ 2006-01-13 20:34 UTC (permalink / raw)
To: Peter van Hardenberg; +Cc: reiserfs-list, Yoanis Gil Delgado
Peter van Hardenberg wrote:
>Hi Yoanis, good to see you're still pursuing this.
>
>On January 11, 2006 02:59 pm, Yoanis Gil Delgado wrote:
>
>
>>This are the intentions:
>>To write a versioning plugin that will allows the file system user to
>>easily revert the files under versioning to a some previous state. The
>>plugin will allow to revert the file state, based on revisions number and
>>date modifications(and not sure about this one). There will be a special
>>pseudo file named "previous" that will return the previous version of the
>>file. The final result should allow to the the following actions:
>>
>>$ echo 1 > myfile.txt (let's say we make this command at Wed Jan 11
>>16:53:55) $ echo 2 > myfile.txt (let's say we make this command at Wed Jan
>>11 16:54:57) $ echo 3 >> myfile.txt (let's say we make this command at Wed
>>Jan 11 16:55:59)
>>
>>Suppose you want the latest version, then you type:
>>$ cat myfile/.../previous
>> Some other content
>>Or you want the n-th version, then you type:
>>$ cat myfile/.../1
>> Some content
>>$ cat myfile/.../2
>> Some other content
>>$ cat myfile/.../3
>>
>>
>
>This is going to clutter the ... directory rather a lot. Instead of adding
>more files into "...." (which, by the way, is completely obscure) I would
>suggest you create a new pseudo directory.
>
>Perhaps:
>$ cat myfile/.^4/history/previous
>$ cat myfile/.^4/history/version/1
>still not quite right, but at least it contains a bit more information about
>what the "1" refers to.
>
>
Ok, lets use myfile/..../versions/1 etc.
>
>I imagine that attribute should be
>$ echo "1" > myfile.txt/..../plugins/versioning
>or
>$ echo "everywrite" > myfile.txt/..../plugins/versioning
>
>Unfortunately, my experience is that you cannot use "echo" to change the data
>in the plugins/* pseudoplugins, even when it should be legal to do so. I just
>had a little ruby script that looked roughly like this:
>
>f = open pseudofile;
>f.write('newplugin');
>f.close;
>
>Never had the time to figure out why that was necessary, but there it is.
>(There is a comment on the plugin-wiki gotchas section.)
>
>
If someone figures out why we can't do it but /proc can, or even fixes
it, it would be good.
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Authoring a versioning plugin
2006-01-12 23:56 ` Yoanis Gil Delgado
@ 2006-01-13 20:59 ` Hans Reiser
0 siblings, 0 replies; 24+ messages in thread
From: Hans Reiser @ 2006-01-13 20:59 UTC (permalink / raw)
To: Yoanis Gil Delgado, Reiserfs mail-list
Yoanis Gil Delgado wrote:
>On Thursday 12 January 2006 06:56 pm, you wrote:
>
> > David,
> >
> > I appreciate your criticism, but we're not in a flame war. I never
> > claimed to be an FS expert. Take it easy; you don't have to beat my
> > suggestion to death. There's no perfect solution, and all feedbacks, no
> > matter how idiotic or simple may seem, help making a better final
> > solution.
> >
> > my suggestions were burst of the moment, I didn't give 'em much thoughts;
> > however, all the problems you found could be fixed. Again, I'm not the FS
> > expert here.
> >
> > -B
>
>Yes I agree with you Bedros, but i don't think David wanted to beat your
> suggestion to death. You're suggestions make me thinks things I have not
>preview. As you say the idea it's to find a good solution.
>
>
>
>
What was it you agreed with?
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Authoring a versioning plugin
2006-01-13 20:34 ` Hans Reiser
@ 2006-01-13 21:17 ` Toomas Laasik
2006-01-13 21:48 ` Hans Reiser
2006-01-14 11:56 ` Pierre Etchemaïté
2006-01-13 23:00 ` Jonathan Sailor
1 sibling, 2 replies; 24+ messages in thread
From: Toomas Laasik @ 2006-01-13 21:17 UTC (permalink / raw)
To: reiserfs-list
[-- Attachment #1: Type: text/plain, Size: 1122 bytes --]
Hello,
Here are some links that I have found while searching such file systems
that can keep versions or log of changes:
http://logfs.sourceforge.net/ - small logging filesystem project started
by a student, but not very stable yet
http://wayback.sourceforge.net/ - written in Perl, based on quite old
version on FUSE API
http://sourceforge.net/projects/cvsfs - uses CVS as file system, based
on FUSE API
http://www.opensolaris.org/os/community/zfs/ - very powerful file system
that supports snapshots of files
Microsoft has made something too on their server platform, but I
couldn't find a link for that.
It seems to me that many have started with it, but haven't finished.
Creating a versioning FS that is comercially stable and fast takes a lot
of effort and is quite complex. Go discover what and how others have
done it and how to do it best in ReiserFS.
I would be very interested in stable file system that supports automatic
versioning. Maybe ReiserFS becomes the first one that I can actually
use. I don't want a userspace FS, but a good FS where I can safely keep
my FreeBSD installation.
Toomas
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/x-pkcs7-signature, Size: 2832 bytes --]
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Authoring a versioning plugin
2006-01-13 21:17 ` Toomas Laasik
@ 2006-01-13 21:48 ` Hans Reiser
2006-01-14 11:56 ` Pierre Etchemaïté
1 sibling, 0 replies; 24+ messages in thread
From: Hans Reiser @ 2006-01-13 21:48 UTC (permalink / raw)
To: Toomas Laasik; +Cc: reiserfs-list
Toomas Laasik wrote:
> Hello,
> Here are some links that I have found while searching such file
> systems that can keep versions or log of changes:
> http://logfs.sourceforge.net/ - small logging filesystem project
> started by a student, but not very stable yet
> http://wayback.sourceforge.net/ - written in Perl, based on quite old
> version on FUSE API
> http://sourceforge.net/projects/cvsfs - uses CVS as file system, based
> on FUSE API
> http://www.opensolaris.org/os/community/zfs/ - very powerful file
> system that supports snapshots of files
> Microsoft has made something too on their server platform, but I
> couldn't find a link for that.
>
> It seems to me that many have started with it, but haven't finished.
> Creating a versioning FS that is comercially stable and fast takes a
> lot of effort and is quite complex. Go discover what and how others
> have done it and how to do it best in ReiserFS.
>
> I would be very interested in stable file system that supports
> automatic versioning. Maybe ReiserFS becomes the first one that I can
> actually use. I don't want a userspace FS, but a good FS where I can
> safely keep my FreeBSD installation.
>
> Toomas
Clearcase is out there and finished and it works. Several thousand
dollars a seat though....
;-)
Hans
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Authoring a versioning plugin
2006-01-13 20:34 ` Hans Reiser
2006-01-13 21:17 ` Toomas Laasik
@ 2006-01-13 23:00 ` Jonathan Sailor
2006-01-14 9:07 ` Peter van Hardenberg
1 sibling, 1 reply; 24+ messages in thread
From: Jonathan Sailor @ 2006-01-13 23:00 UTC (permalink / raw)
To: Hans Reiser; +Cc: Peter van Hardenberg, reiserfs-list, Yoanis Gil Delgado
On Fri, 13 Jan 2006, Hans Reiser wrote:
>> I imagine that attribute should be
>> $ echo "1" > myfile.txt/..../plugins/versioning
>> or
>> $ echo "everywrite" > myfile.txt/..../plugins/versioning
>>
>> Unfortunately, my experience is that you cannot use "echo" to change the data
>> in the plugins/* pseudoplugins, even when it should be legal to do so. I just
>> had a little ruby script that looked roughly like this:
>>
>> f = open pseudofile;
>> f.write('newplugin');
>> f.close;
>>
>> Never had the time to figure out why that was necessary, but there it is.
>> (There is a comment on the plugin-wiki gotchas section.)
>>
>>
> If someone figures out why we can't do it but /proc can, or even fixes
> it, it would be good.
It wouldn't be something so simple as echo's trailing newline, would it?
-Jonathan
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Authoring a versioning plugin
2006-01-13 23:00 ` Jonathan Sailor
@ 2006-01-14 9:07 ` Peter van Hardenberg
2006-01-14 17:28 ` David Masover
0 siblings, 1 reply; 24+ messages in thread
From: Peter van Hardenberg @ 2006-01-14 9:07 UTC (permalink / raw)
To: Jonathan Sailor; +Cc: Hans Reiser, reiserfs-list, Yoanis Gil Delgado
On January 13, 2006 03:00 pm, you wrote:
> On Fri, 13 Jan 2006, Hans Reiser wrote:
> >
> > If someone figures out why we can't do it but /proc can, or even fixes
> > it, it would be good.
>
> It wouldn't be something so simple as echo's trailing newline, would it?
>
> -Jonathan
Good thought, but no:
pvh@cortana:/home/norbs/reiser/emptydir/..../plugin$ cat fibration
1 dot-o fibrate .o files separately
norbs@cortana:/home/norbs/reiser/emptydir/..../plugin$ echo "ext-1" -n >
fibration
norbs@cortana:/home/norbs/reiser/emptydir/..../plugin$ cat fibration
1 dot-o fibrate .o files separately
norbs@cortana:/home/norbs/reiser/emptydir/..../plugin$ irb
irb(main):004:0> f = open('fibration', 'w')
=> #<File:fibration>
irb(main):005:0> f.write('ext-1')
=> 5
irb(main):006:0> f.close
=> nil
irb(main):007:0> exit
norbs@cortana:/home/norbs/reiser/emptydir/..../plugin$ cat fibration
2 ext-1 fibrate file by single character extension
norbs@cortana:/home/norbs/reiser/emptydir/..../plugin$
I'd look more closely at how proc does it and how we do it, but I'm too tired
for source digging tonight.
-pvh
--
Peter van Hardenberg (pvh@pvh.ca)
Victoria, BC, Canada
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Authoring a versioning plugin
2006-01-13 21:17 ` Toomas Laasik
2006-01-13 21:48 ` Hans Reiser
@ 2006-01-14 11:56 ` Pierre Etchemaïté
1 sibling, 0 replies; 24+ messages in thread
From: Pierre Etchemaïté @ 2006-01-14 11:56 UTC (permalink / raw)
To: reiserfs-list
Le Fri, 13 Jan 2006 23:17:06 +0200, Toomas Laasik <toomas@ac24.ee> a écrit :
> Hello,
> Here are some links that I have found while searching such file systems
> that can keep versions or log of changes:
While not currently implemented as a filesystem, Subversion repositories
look-and-feel is very much like a filesystem.
I mention it, because instead of maintaining revisions of each file
separately (RCS, then CVS, etc.), it maintains revisions (simple
integer counter) of the repository as a whole.
It nicely solve the problem of deleted (or simply moved around) files.
Tagging versions, creating branches, is handled orthogonally, by copying
whole trees in other directories (of course internally everything is
just "hardlinked").
What I mean is, that different approach could give ideas on how to
implement versionning at filesystem level, or maybe improve a filesystem
as a better backend (or frontend ?) to Subversion...
Hope it helps,
Pierre.
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Authoring a versioning plugin
2006-01-14 9:07 ` Peter van Hardenberg
@ 2006-01-14 17:28 ` David Masover
2006-01-14 22:23 ` Hans Reiser
0 siblings, 1 reply; 24+ messages in thread
From: David Masover @ 2006-01-14 17:28 UTC (permalink / raw)
To: Peter van Hardenberg
Cc: Jonathan Sailor, Hans Reiser, reiserfs-list, Yoanis Gil Delgado
Peter van Hardenberg wrote:
> On January 13, 2006 03:00 pm, you wrote:
>
>>On Fri, 13 Jan 2006, Hans Reiser wrote:
>>
>>>If someone figures out why we can't do it but /proc can, or even fixes
>>>it, it would be good.
>>
>>It wouldn't be something so simple as echo's trailing newline, would it?
>>
>>-Jonathan
>
>
> Good thought, but no:
[...]
> norbs@cortana:/home/norbs/reiser/emptydir/..../plugin$ echo "ext-1" -n >
> fibration
[...]
> norbs@cortana:/home/norbs/reiser/emptydir/..../plugin$ irb
> irb(main):004:0> f = open('fibration', 'w')
> => #<File:fibration>
> irb(main):005:0> f.write('ext-1')
> => 5
> irb(main):006:0> f.close
> => nil
> irb(main):007:0> exit
[...]
> I'd look more closely at how proc does it and how we do it, but I'm too tired
> for source digging tonight.
I think the difference is that Reiser expects a null-terminated string,
whereas Proc doesn't need the null, and can chop off newlines when needed.
So, I think this would also work:
echo -en 'ext-1\0' > fibration
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Authoring a versioning plugin
2006-01-14 17:28 ` David Masover
@ 2006-01-14 22:23 ` Hans Reiser
0 siblings, 0 replies; 24+ messages in thread
From: Hans Reiser @ 2006-01-14 22:23 UTC (permalink / raw)
To: David Masover
Cc: Peter van Hardenberg, Jonathan Sailor, reiserfs-list,
Yoanis Gil Delgado
David Masover wrote:
>Peter van Hardenberg wrote:
>
>
>>On January 13, 2006 03:00 pm, you wrote:
>>
>>
>>
>>>On Fri, 13 Jan 2006, Hans Reiser wrote:
>>>
>>>
>>>
>>>>If someone figures out why we can't do it but /proc can, or even fixes
>>>>it, it would be good.
>>>>
>>>>
>>>It wouldn't be something so simple as echo's trailing newline, would it?
>>>
>>>-Jonathan
>>>
>>>
>>Good thought, but no:
>>
>>
>[...]
>
>
>>norbs@cortana:/home/norbs/reiser/emptydir/..../plugin$ echo "ext-1" -n >
>>fibration
>>
>>
>[...]
>
>
>>norbs@cortana:/home/norbs/reiser/emptydir/..../plugin$ irb
>>irb(main):004:0> f = open('fibration', 'w')
>>=> #<File:fibration>
>>irb(main):005:0> f.write('ext-1')
>>=> 5
>>irb(main):006:0> f.close
>>=> nil
>>irb(main):007:0> exit
>>
>>
>[...]
>
>
>>I'd look more closely at how proc does it and how we do it, but I'm too tired
>>for source digging tonight.
>>
>>
>
>I think the difference is that Reiser expects a null-terminated string,
>
>
I'll happily take a patch to fix that.....
>whereas Proc doesn't need the null, and can chop off newlines when needed.
>
>So, I think this would also work:
>
>echo -en 'ext-1\0' > fibration
>
>
>
>
>
^ permalink raw reply [flat|nested] 24+ messages in thread
end of thread, other threads:[~2006-01-14 22:23 UTC | newest]
Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-01-11 22:59 Authoring a versioning plugin Yoanis Gil Delgado
2006-01-12 4:09 ` Hans Reiser
2006-01-12 6:44 ` Hans Reiser
2006-01-12 16:33 ` Jonathan Briggs
2006-01-12 18:33 ` Bedros Hanounik
[not found] ` <200601121502.32227.fred@lab.matcom.uh.cu>
2006-01-12 20:08 ` Yoanis Gil Delgado
2006-01-12 21:48 ` David Masover
2006-01-12 22:43 ` Bedros Hanounik
[not found] ` <200601121856.00665.fred@lab.matcom.uh.cu>
2006-01-12 23:56 ` Yoanis Gil Delgado
2006-01-13 20:59 ` Hans Reiser
2006-01-13 16:43 ` David Masover
[not found] ` <200601121434.54881.fred@lab.matcom.uh.cu>
2006-01-12 20:05 ` Yoanis Gil Delgado
2006-01-12 19:13 ` Mike Benoit
2006-01-12 18:14 ` Peter van Hardenberg
[not found] ` <200601121439.09483.fred@lab.matcom.uh.cu>
2006-01-12 20:06 ` Yoanis Gil Delgado
2006-01-12 21:58 ` David Masover
2006-01-13 20:34 ` Hans Reiser
2006-01-13 21:17 ` Toomas Laasik
2006-01-13 21:48 ` Hans Reiser
2006-01-14 11:56 ` Pierre Etchemaïté
2006-01-13 23:00 ` Jonathan Sailor
2006-01-14 9:07 ` Peter van Hardenberg
2006-01-14 17:28 ` David Masover
2006-01-14 22:23 ` Hans Reiser
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.