From: ebiederm@xmission.com (Eric W. Biederman)
To: Jamie Lokier <jamie@shareable.org>
Cc: "Jörn Engel" <joern@wohnheim.fh-wedel.de>,
"Davide Libenzi" <davidel@xmailserver.org>,
"Patrick J. LoPresti" <patl@users.sourceforge.net>,
"Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] cowlinks v2
Date: 29 Mar 2004 16:58:33 -0700 [thread overview]
Message-ID: <m1u107fbo6.fsf@ebiederm.dsl.xmission.com> (raw)
In-Reply-To: <20040329230537.GA8568@mail.shareable.org>
Jamie Lokier <jamie@shareable.org> writes:
> Eric W. Biederman wrote:
> > So I see a problem with Scenario C. Perhaps you can refute it.
>
> Ick. You're right. I cannot refute it.
The upside is since we can't it makes the implementation much easier :)
> Fwiw, I would have broken the directory cows on the first write, not
> the open.
I did it only so that programs do not see inode numbers change under
them. For the copy that gets the original inode numbers delaying
until write is fine, for the copy with the new inode numbers to avoid
surprises you need to break the cow on the directory and move it to
the files on readdir, stat, and open.
> Thus, snapshots using lazy directory copies requires either that there
> are no hard links of the type you described (e.g. when snapshotting
> the root of the filesystem), or rather complex metadata to track the
> hard links, not dissimilar to the metadata needed to preserve hard
> links _within_ the snapshot. They both seem far too complex to be worth it.
Agreed.
> Hard links just don't play well with lazy cowlinked directories.
>
> They are fine with non-lazy directory cowlinking, where the whole
> directory tree is duplicated and only files are cow'd. Note that this
> doesn't apply to the original implementation which used hard links
> with a special flag: maintaining hard links in conjunction with
> cowlinks requires the inode duplication we've been talking about.
? The problem is lazy propagation of the cow flag. The implementation
for ordinary files does not matter. Only the implementation
for directories matters.
> Btw, if we have cowlinks implemented using inode duplication, then it
> isn't necessary for both inodes to have the same metadata such as
> mtime, ctime, mode etc. Only the data is shared. That means the
> sendfile() system call could conceivably be overloaded, meaning to
> copy the data, and let "cp --cow" decide whether it wants to copy the
> metadata (same as as "cp -rp" or "cp -rpd"), or not (same as "cp -r").
Sendfile feels about right but it has a few issues that complication
something like this. It works on file descriptors, and it takes
a length parameter.
There is a lot of room for things to go wrong when implementing
cowlink(const char *oldname, const char *newname) in user space.
Since the semantics are a delayed sendfile in other ways sendfile
feels like a good fit.
Eric
next prev parent reply other threads:[~2004-03-29 23:59 UTC|newest]
Thread overview: 95+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-03-20 8:34 Jörn Engel
2004-03-20 8:49 ` Andrew Morton
2004-03-20 11:27 ` Jörn Engel
2004-03-20 19:28 ` Andrew Morton
2004-03-21 12:43 ` Jörn Engel
2004-03-21 18:53 ` Jörn Engel
[not found] ` <mit.lcs.mail.linux-kernel/20040320083411.GA25934@wohnheim.fh-wedel.de>
2004-03-20 15:03 ` Patrick J. LoPresti
2004-03-20 15:23 ` Jörn Engel
2004-03-29 17:12 ` Pavel Machek
2004-03-29 21:05 ` Patrick J. LoPresti
2004-03-29 23:16 ` Pavel Machek
2004-03-31 14:34 ` Jamie Lokier
2004-03-31 14:45 ` Pavel Machek
2004-03-31 15:20 ` Jamie Lokier
2004-04-02 11:44 ` Tim Connors
2004-04-02 16:54 ` Jörn Engel
2004-04-02 18:01 ` Pavel Machek
2004-04-02 18:17 ` Jörn Engel
2004-04-02 18:23 ` Pavel Machek
2004-04-02 19:28 ` Ross Biro
2004-04-02 21:35 ` Pavel Machek
2004-04-05 8:12 ` Jörn Engel
2004-04-05 8:19 ` Pavel Machek
2004-04-05 8:45 ` Jörn Engel
2004-04-02 20:09 ` Jamie Lokier
2004-04-02 21:39 ` Pavel Machek
2004-04-02 22:00 ` Chris Friesen
2004-04-03 0:49 ` Jamie Lokier
2004-04-03 8:23 ` Pavel Machek
2004-04-03 13:15 ` Jamie Lokier
2004-04-05 8:19 ` Jörn Engel
2004-04-05 8:22 ` Pavel Machek
2004-04-03 0:46 ` Jamie Lokier
2004-04-03 1:04 ` Jamie Lokier
2004-04-03 1:21 ` Erik Andersen
2004-04-03 1:59 ` Jamie Lokier
2004-04-03 3:55 ` Ross Biro
2004-04-03 9:09 ` Pavel Machek
2004-04-03 13:27 ` Jamie Lokier
2004-04-03 18:39 ` Eric W. Biederman
2004-04-03 19:43 ` Jamie Lokier
2004-04-03 20:30 ` Eric W. Biederman
2004-04-03 21:59 ` Jamie Lokier
2004-04-04 8:15 ` Eric W. Biederman
2004-04-05 8:35 ` Jörn Engel
2004-04-05 9:15 ` Eric W. Biederman
2004-04-05 9:18 ` Jörn Engel
2004-04-05 11:43 ` Pavel Machek
2004-04-05 12:17 ` Jamie Lokier
2004-04-05 12:39 ` Jamie Lokier
2004-04-05 12:41 ` Jamie Lokier
2004-04-05 18:03 ` Jörn Engel
2004-04-05 11:10 ` jlnance
2004-04-05 11:46 ` Pavel Machek
2004-04-05 12:35 ` Jamie Lokier
2004-04-05 8:43 ` Jörn Engel
2004-04-03 19:47 ` Eric W. Biederman
2004-04-05 8:54 ` Jörn Engel
2004-04-05 9:07 ` Eric W. Biederman
2004-03-20 16:48 ` Davide Libenzi
2004-03-21 12:57 ` Jörn Engel
2004-03-21 17:59 ` Davide Libenzi
2004-03-21 18:14 ` Jörn Engel
2004-03-21 20:26 ` Davide Libenzi
2004-03-21 20:35 ` Jörn Engel
2004-03-22 0:18 ` Eric W. Biederman
2004-03-22 0:25 ` Davide Libenzi
2004-03-22 5:07 ` Eric W. Biederman
2004-03-22 5:11 ` Davide Libenzi
2004-03-22 11:20 ` Eric W. Biederman
2004-03-22 16:02 ` Davide Libenzi
2004-03-25 17:49 ` Jamie Lokier
2004-03-25 18:06 ` Eric W. Biederman
2004-03-25 19:43 ` Jamie Lokier
2004-03-25 20:38 ` Linus Torvalds
2004-03-25 22:16 ` Eric W. Biederman
2004-04-01 14:53 ` Jörn Engel
2004-04-02 11:54 ` Tim Connors
2004-03-25 21:46 ` Eric W. Biederman
2004-03-27 10:28 ` Jamie Lokier
2004-03-27 21:00 ` Eric W. Biederman
2004-03-27 21:42 ` Jamie Lokier
2004-03-27 23:45 ` Eric W. Biederman
2004-03-28 0:43 ` Eric W. Biederman
2004-03-28 12:22 ` Jamie Lokier
2004-03-28 20:07 ` Eric W. Biederman
2004-03-28 23:55 ` Jamie Lokier
2004-03-29 1:31 ` Eric W. Biederman
2004-03-29 12:36 ` Jamie Lokier
2004-03-29 19:36 ` Eric W. Biederman
2004-03-29 23:05 ` Jamie Lokier
2004-03-29 23:58 ` Eric W. Biederman [this message]
2004-03-29 7:45 ` Denis Vlasenko
2004-03-29 9:28 ` Pavel Machek
2004-03-29 12:40 ` Jamie Lokier
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=m1u107fbo6.fsf@ebiederm.dsl.xmission.com \
--to=ebiederm@xmission.com \
--cc=davidel@xmailserver.org \
--cc=jamie@shareable.org \
--cc=joern@wohnheim.fh-wedel.de \
--cc=linux-kernel@vger.kernel.org \
--cc=patl@users.sourceforge.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
all inboxes | Powered by JetHome®