9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: Russ Cox <rsc@swtch.com>
To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net>
Subject: Re: [9fans] Changelogs & Patches?
Date: Mon, 26 Jan 2009 08:22:30 -0800	[thread overview]
Message-ID: <dd6fe68a0901260822r68b88027w3894e58e661ce31c@mail.gmail.com> (raw)
In-Reply-To: <1232950603.22808.93.camel@goose.sun.com>

> As for me, here's my wish list so far. It is all about fossil, since
> it looks like venti is quite fine (at least for my purposes) the
> way it is:
>     1. Block consistency. Yes I know the argument here is that you
>     can always roll-back to the last known archival snapshot on venti.
>     But the point is to kown *when* to roll back. And unless fossil
>     warns you that a block has been corrupted you wouldn't know.

I don't understand what you mean.  Do you want fossil to tell
you when your disk is silently corrupting data, or something else?

>     2. live "mounting" of arbitrary scores corresponding to vac
>     VtRoot's to arbitrary sub-directories in my fossil tree. After
>     all, if I can do "create" of regular files and sub-directories
>     via fossil's console why can't I create pointers to the existing
>     venti file-hierarchies?

The only reason this is hard is the choice of qids.
You need to decide whether to reuse the qids in the archive
or renumber them to avoid conflicts with existing qids.
The vac format already has a way to offset the qids of whole
subtrees, but then if you make the tree editable and new files are
created, it gets complicated.

>     3. Not sure whether this is a fossil requirement or not, but I
>     feel uneasy that a root score is sort of unrecoverable from the
>     pure venti archive. Its either that I know it or I don't.

I don't understand what you mean here either.
>From a venti archive, you do cat file.vac to find
the actual score.

For what it's worth, I'll be the first to admit that fossil has a
ton of rough edges and things that could be done better.
There were early design decisions that we didn't know the
implications of until relatively late in the implementation,
and I would revisit many of those if I had the luxury of
doing it over.  It is very much version 0.

The amazing thing to me about fossil is how indestructable
it is when used with venti.  While I was finishing fossil,
I ran it on my laptop as my day-to-day file system, and I never
lost a byte of data despite numerous bugs, because venti
itself was solid, and I always did an archive to venti before
trying out new code.  Once you see the data in the archive
tree, you can be very sure it's not going away.

> It is actually quite remarkable how similar the models of
> fossil/venti and Git seem to be: both build on the notion
> of the immutable history. Both address the history by the
> hash index. Both have a mutable area whose only purpose
> is to stage data for the subsequent commit to the permanent
> history. Etc.

I don't think it's too remarkable.  Content hash addressing was
in the air for the last decade or so and there were a lot of
systems built using it.  The one thing it does really well
is eliminate any worry about cache coherency and versioning.
That makes it very attractive for any system with large
amounts of data or multiple machines.  Once you've gone down
that route, you have to come to grips with how to implement
mutability in a fundamentally immutable system, and the
obvious way is with a mutable write buffer staging writes
out to the immutable storage.

> Hm. There doesn't seem to be much of shutdown code for fossil/venti
> in there. Does it mean that sync'ing venti and then just slay(1)'ing
> it is ok?

Yes, it is.  Venti is designed to be crash-proof, as is fossil.
They get the write ordering right and pick up where they left off.
They are not, however, disk corruption-proof.

Russ


  reply	other threads:[~2009-01-26 16:22 UTC|newest]

Thread overview: 91+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-22 15:27 Venkatesh Srinivas
2008-12-22 15:29 ` erik quanstrom
2008-12-22 16:41 ` Charles Forsyth
2008-12-25  6:34   ` Roman Shaposhnik
2008-12-25  6:40     ` erik quanstrom
2008-12-26  4:28       ` Roman Shaposhnik
2008-12-26  4:45         ` lucio
2008-12-26  4:57         ` Anthony Sorace
2008-12-26  6:19           ` blstuart
2008-12-27  8:00           ` Roman Shaposhnik
2008-12-27 11:56             ` erik quanstrom
2008-12-30  0:31               ` Roman Shaposhnik
2008-12-30  0:57                 ` erik quanstrom
2009-01-05  5:19                   ` Roman V. Shaposhnik
2009-01-05  5:28                     ` erik quanstrom
2008-12-22 17:03 ` Devon H. O'Dell
2008-12-23  4:31   ` Uriel
2008-12-23  4:46 ` Nathaniel W Filardo
2008-12-25  6:50   ` Roman Shaposhnik
2008-12-25 14:37     ` erik quanstrom
2008-12-26 13:27       ` Charles Forsyth
2008-12-26 13:33         ` Charles Forsyth
2008-12-26 14:27         ` tlaronde
2008-12-26 17:25           ` blstuart
2008-12-26 18:14             ` tlaronde
2008-12-26 18:20               ` erik quanstrom
2008-12-26 18:52                 ` tlaronde
2008-12-26 21:44                   ` blstuart
2008-12-26 22:04                     ` Eris Discordia
2008-12-26 22:30                       ` erik quanstrom
2008-12-26 23:00                         ` blstuart
2008-12-27  6:04                         ` Eris Discordia
2008-12-27 10:36                           ` tlaronde
2008-12-27 16:27                             ` Eris Discordia
2008-12-29 23:54         ` Roman Shaposhnik
2008-12-30  0:13           ` hiro
2008-12-30  1:07           ` erik quanstrom
2008-12-30  1:48           ` Charles Forsyth
2008-12-30 13:18             ` Uriel
2008-12-30 15:06               ` C H Forsyth
2008-12-30 17:31                 ` Uriel
2008-12-31  1:58                   ` Noah Evans
2009-01-03 22:03           ` sqweek
2009-01-05  5:05             ` Roman V. Shaposhnik
2009-01-05  5:12               ` erik quanstrom
2009-01-06  5:06                 ` Roman Shaposhnik
2009-01-06 13:55                   ` erik quanstrom
2009-01-05  5:24               ` andrey mirtchovski
2009-01-06  5:49                 ` Roman Shaposhnik
2009-01-06 14:22                   ` andrey mirtchovski
2009-01-06 16:19                     ` erik quanstrom
2009-01-06 23:23                       ` Roman V. Shaposhnik
2009-01-06 23:44                         ` erik quanstrom
2009-01-08  0:36                           ` Roman V. Shaposhnik
2009-01-08  1:11                             ` erik quanstrom
2009-01-20  6:20                               ` Roman Shaposhnik
2009-01-20 14:19                                 ` erik quanstrom
2009-01-20 22:30                                   ` Roman V. Shaposhnik
2009-01-20 23:36                                     ` erik quanstrom
2009-01-21  1:43                                       ` Roman V. Shaposhnik
2009-01-21  2:02                                         ` erik quanstrom
2009-01-26  6:28                                           ` Roman V. Shaposhnik
2009-01-26 13:42                                             ` erik quanstrom
2009-01-26 16:15                                               ` Roman V. Shaposhnik
2009-01-26 16:39                                                 ` erik quanstrom
2009-01-27  4:45                                                   ` Roman Shaposhnik
2009-01-21 19:02                                         ` Uriel
2009-01-21 19:53                                           ` Steve Simon
2009-01-24  3:15                                             ` Roman V. Shaposhnik
2009-01-24  3:36                                               ` erik quanstrom
2009-01-26  6:21                                                 ` Roman V. Shaposhnik
2009-01-26 13:53                                                   ` erik quanstrom
2009-01-26 16:21                                                     ` Roman V. Shaposhnik
2009-01-26 17:37                                                       ` erik quanstrom
2009-01-27  4:51                                                         ` Roman Shaposhnik
2009-01-27  5:44                                                           ` erik quanstrom
2009-01-21 20:01                                           ` erik quanstrom
2009-01-24  3:19                                           ` Roman V. Shaposhnik
2009-01-24  3:25                                             ` erik quanstrom
2009-01-20  6:48                     ` Roman Shaposhnik
2009-01-20 14:13                       ` erik quanstrom
2009-01-20 16:19                         ` Steve Simon
2009-01-20 23:52                       ` andrey mirtchovski
2009-01-21  4:49                         ` Dave Eckhardt
2009-01-21  6:38                         ` Steve Simon
2009-01-21 14:02                           ` erik quanstrom
2009-01-26  6:16                         ` Roman V. Shaposhnik
2009-01-26 16:22                           ` Russ Cox [this message]
2009-01-26 19:42                             ` Roman V. Shaposhnik
2009-01-26 20:11                               ` Steve Simon
2008-12-27  7:40       ` Roman Shaposhnik

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=dd6fe68a0901260822r68b88027w3894e58e661ce31c@mail.gmail.com \
    --to=rsc@swtch.com \
    --cc=9fans@9fans.net \
    /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).