From: "Alexander G. M. Smith" <agmsmith@rogers.com>
To: Nikita Danilov <nikita@clusterfs.com>
Cc: reiserfs-list@namesys.com
Subject: Re: Performance Impacts of Graph Cycles due to Multiple Parents
Date: Mon, 06 Jun 2005 22:04:35 -0400 EDT [thread overview]
Message-ID: <14167162600-BeMail@cr593174-a> (raw)
In-Reply-To: <17056.15292.35169.504578@gargle.gargle.HOWL>
Nikita Danilov wrote on Fri, 3 Jun 2005 15:15:08 +0400:
> This is exactly what some application do. Here is how transactions can
> be implemented in the POSIX file system:
>
> - you have a symlink ./d.active pointing to the "current" directory
> under which some sub-tree of interest is located;
>
> - to start new transaction create directory ./d.new and populate it
> with hard-links to ./d.active content exactly replicating its
> structure;
>
> - perform in ./d.new compound operation that you want to be atomic:
> when file in ./d.new is to be modified, hard link is broken, and new
> file created;
>
> - mv d.new d.committed.$(date +%s.%N);
>
> - when system is initialized (possibly after a crash), re-target
> ./d.current to the latest ./d.committed.*, remove uncommitted ./d.new
> if any.
>
> This mechanism, known as "phase trees", obviously depends on rename(2)
> atomicity. (While this is not relevant to our discussion, a by-product
> advantage of phase-trees is that they also provide some form of
> isolation for free: read-only queries run through ./d.current and see
> only committed data.) Note that I-AM-A-TREE optimization you proposed
> doesn't work here.
Yes, with the hard links, the multi-parent file system would need to do
slightly more checking, well, only slightly more since the hard links
are to files that have no children. Still, it would have to lock all
the children of the moving directories. Actually, it would be one step
better in another sense - you could move the whole directory over your
current directory and have it replace "current" and all its children with
the new versions, since it can understand deleting children of a directory
that's become nonexistent, while keeping the ones which are linked elsewhere.
Also, just double checking my understanding, but is that single
threaded? I'd expect it to break if you had more than one ./d.new
directory.
- Alex
next prev parent reply other threads:[~2005-06-07 2:04 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-05-28 0:46 File as a directory - Ordered Relations Alexander G. M. Smith
2005-05-28 4:56 ` David Masover
2005-05-28 19:42 ` Valdis.Kletnieks
2005-05-29 17:58 ` File as a directory - VFS Changes Alexander G. M. Smith
2005-05-30 8:25 ` Hans Reiser
2005-05-30 11:00 ` Nikita Danilov
2005-05-31 0:20 ` Alexander G. M. Smith
2005-05-31 9:34 ` Nikita Danilov
2005-05-31 15:04 ` Hans Reiser
2005-05-31 16:00 ` Nikita Danilov
2005-05-31 16:30 ` Valdis.Kletnieks
2005-05-31 16:55 ` Jonathan Briggs
2005-05-31 16:59 ` Hans Reiser
2005-05-31 17:13 ` Jonathan Briggs
2005-05-31 18:27 ` Hans Reiser
2005-05-31 21:01 ` Jonathan Briggs
2005-05-31 21:08 ` Jonathan Briggs
2005-05-31 22:36 ` Nikita Danilov
2005-05-31 23:01 ` Jonathan Briggs
2005-06-01 10:39 ` Nikita Danilov
2005-06-01 10:43 ` Nikita Danilov
2005-06-01 14:06 ` Jonathan Briggs
2005-06-01 14:42 ` Nikita Danilov
2005-06-01 15:40 ` Jonathan Briggs
2005-06-01 17:27 ` Nikita Danilov
2005-06-01 19:03 ` Jonathan Briggs
2005-06-02 10:38 ` Nikita Danilov
2005-06-02 18:35 ` Jonathan Briggs
2005-06-02 23:54 ` Nikita Danilov
2005-06-03 17:57 ` Hans Reiser
2005-06-04 19:45 ` Nikita Danilov
2005-06-04 20:13 ` David Masover
2005-06-07 5:08 ` Hans Reiser
2005-06-03 6:44 ` Faraz Ahmed
2005-05-31 18:23 ` Nikita Danilov
2005-05-31 18:32 ` Hans Reiser
2005-06-02 1:27 ` Alexander G. M. Smith
2005-06-02 7:46 ` Hans Reiser
2005-06-02 9:11 ` Nikita Danilov
2005-06-02 17:23 ` Hubert Chan
2005-06-01 2:11 ` Alexander G. M. Smith
2005-06-01 10:58 ` Nikita Danilov
2005-06-02 1:58 ` Alexander G. M. Smith
2005-06-02 10:03 ` Nikita Danilov
2005-06-03 3:35 ` Performance Impacts of Graph Cycles due to Multiple Parents Alexander G. M. Smith
2005-06-03 11:15 ` Nikita Danilov
2005-06-07 2:04 ` Alexander G. M. Smith [this message]
2005-05-30 8:19 ` File as a directory - Ordered Relations Hans Reiser
2005-05-31 16:46 ` Jonathan Briggs
2005-05-31 17:07 ` Hans Reiser
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=14167162600-BeMail@cr593174-a \
--to=agmsmith@rogers.com \
--cc=nikita@clusterfs.com \
--cc=reiserfs-list@namesys.com \
/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 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.