From: Hans Reiser <reiser@namesys.com>
To: "Albert D. Cahalan" <acahalan@cs.uml.edu>
Cc: Pavel Machek <pavel@suse.cz>, Quinn Harris <quinn@nmt.edu>,
linux-kernel@vger.kernel.org
Subject: Re: File copy system call proposal
Date: Mon, 10 Dec 2001 05:49:50 +0300 [thread overview]
Message-ID: <3C1422CE.5050207@namesys.com> (raw)
In-Reply-To: <200112101150.fBABosS271828@saturn.cs.uml.edu>
Albert D. Cahalan wrote:
>>>I would like to propose implementing a file copy system call.
>>>I expect the initial reaction to such a proposal would be "feature
>>>bloat" but I believe some substantial benefits can be seen possibly
>>>making it worthwhile, primarily the following:
>>>
>>>Copy on write:
>>>
>>You want cowlink() syscall, not copy() syscall. If they are on different
>>partitions, let userspace do the job.
>>
>
>That looks like a knee-jerk reaction to stuff going in the kernel.
>I want maximum survival of non-UNIX metadata and maximum performance
>for this common operation. Let's say you are telecommuting, and...
>
>You have mounted an SMB share from a Windows XP server.
>You need to copy a file that has NTFS security data.
>The file is 99 GB in size, on the far side of a 33.6 kb/s modem link.
>Now copy this file!
>Better yet, maybe you have two mount points or mounted two shares.
>
>????
>
>Filesystem-specific user tools are abominations BTW. We don't
>have reiser-mv, reiser-cp, reiser-gmc, reiser-rm, etc.
>
I think that it is legitimate to first implement a piece of
functionality in one filesystem, and only after it has that real design
stability that comes from real code that users have critiqued,
proselytize to other filesystems. The disadvantage to the approach
though is that it advantages one filesystem, and can cause you to lose
adherents in the other filesystem camps. For instance, the journaling
code of ext3, we just weren't willing to wait, and conversely I think
that ext3/XFS aren't willing to wait for how we do extended attributes.
However, I suspect that how we want to do extended attributes (that is,
not to do them, but instead to do a better file API) is going to be a
tough sell until it is working code. I don't think i could have
convinced the ext2 camp of the advantages of trees and tail combining
without shipping code that did it (ok, I didn't really try, but somehow
I think this.....). Now they seem to think it is good stuff, and are
responding with a rather interesting htree implementation that, if I
understand right, does fewer memory copies due to packing less tightly
(which we may have to contemplate doing as a performance tweak for
reiser4.1).
So in sum, I think that the right approach is to say: "Hey, I think this
is a nice feature, any other filesystems interested?", and if there is
no enthusiasm then go and implement it and let the users convince them
it belongs in VFS.
So, for the record, I think that sendfile for all file types, and
cowlink, are both different features and worthwhile.
Reiser4 needs a plugin interconnect, and I think this plugin
interconnect should translate from one filetype to another, and if you
say reiser4("fileA<-fileB") it should accomplish copy() functionality.
reiser4() will also accomplish subfile copying of ranges, etc., if you
specify them, but that is going beyond this thread.
I think I don't have the slightest chance of getting the ext2 crowd
interested in these features before it works in reiserfs based on their
remarks at the linux kernel summit. There are some folks like me who
think filesystems are behind other namespaces such as search engines and
databases and should catch up, and others who think putting keyword
search or transactions into the kernel is just nutty. (Though it is
actually a lot easier than putting balanced trees into the kernel, but....)
I'd like to thank Albert for persisting here with reminding people of
his example of where Windows does it better, API design wise (it isn't
his first email on the topic).
Hans
next prev parent reply other threads:[~2001-12-10 14:51 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-12-08 3:42 File copy system call proposal Quinn Harris
2001-12-08 4:00 ` H. Peter Anvin
2001-12-08 6:03 ` Quinn Harris
2001-12-08 13:57 ` Daniel Phillips
2001-12-09 0:19 ` H. Peter Anvin
2001-12-09 4:56 ` Quinn Harris
2001-12-10 5:44 ` Albert D. Cahalan
2001-12-09 20:25 ` Hans Reiser
2001-12-10 15:19 ` Daniel Phillips
2001-12-13 10:01 ` Andreas Dilger
2001-12-13 21:17 ` Pavel Machek
2001-12-19 20:26 ` Daniel Phillips
2001-12-20 10:09 ` Pavel Machek
2001-12-20 13:38 ` Svein Ove Aas
2001-12-20 13:53 ` Jakob Østergaard
2001-12-20 14:00 ` Jakob Østergaard
2001-12-23 1:19 ` Pavel Machek
2001-12-20 14:31 ` David Woodhouse
2001-12-20 15:06 ` George Greer
2001-12-20 15:07 ` David Woodhouse
2001-12-20 21:32 ` Jamie Lokier
2001-12-08 4:25 ` Christian Lavoie
[not found] ` <1007833194.17577.0.camel@buffy>
2001-12-08 19:23 ` Quinn Harris
2001-12-08 23:11 ` Ton Hospel
2001-12-09 15:35 ` Pavel Machek
2001-12-10 11:50 ` Albert D. Cahalan
2001-12-10 2:49 ` Hans Reiser [this message]
2001-12-10 12:13 ` Pavel Machek
2001-12-10 15:20 ` vda
-- strict thread matches above, loose matches on Subject: below --
2001-12-10 18:44 Petr Vandrovec
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=3C1422CE.5050207@namesys.com \
--to=reiser@namesys.com \
--cc=acahalan@cs.uml.edu \
--cc=linux-kernel@vger.kernel.org \
--cc=pavel@suse.cz \
--cc=quinn@nmt.edu \
/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