From: Linus Torvalds <torvalds@osdl.org>
To: "Jörn Engel" <joern@wohnheim.fh-wedel.de>
Cc: Andrew Morton <akpm@osdl.org>,
linux-kernel@vger.kernel.org, Steve French <smfltc@us.ibm.com>
Subject: Re: [PATCH 4/4] copyfile: copyfile
Date: Tue, 7 Sep 2004 07:06:00 -0700 (PDT) [thread overview]
Message-ID: <Pine.LNX.4.58.0409070656150.2299@ppc970.osdl.org> (raw)
In-Reply-To: <20040907121520.GC27297@wohnheim.fh-wedel.de>
On Tue, 7 Sep 2004, Jörn Engel wrote:
>
> Again, the syscall itself may be a stupid idea, but Steve indicated
> interest for cifs. I'll hide behind his back and let him fight for
> it. ;)
Well, this isn't useful for cifs.
For cifs to be able to use it, the "copyfile()" interface needs to
basically just be a pathname operation (ie a "dir->i_op->copy()"), not a
"struct file" operation. It's more like the VFS "->rename()" or "->link"
operations, in other words. And it should return -EXDEV the same way
rename returns EXDEV if the files aren't on the same filesystem.
Then you could (and should) make a "generic_file_copy()" function that
takes that pathname format, and then uses sendfile() to do the copy for
regular disk-based filesystems.
I think you should be able to copy the "sys_link()" code for almost all of
the top-level stuff. The only real difference being
- error = dir->i_op->link(old_dentry, dir, new_dentry);
+ error = dir->i_op->copy(old_dentry, dir, new_dentry);
or something.
And no, I don't know how to handle interruptability. I think the right
answer may be that filesystems that don't support this as a "native op"
and can't do it quickly should just return an error, and then users can
copy their multi-gigabyte files by hand, like they used to.
So if we do this, we do this _right_. We also make sure that we error out
"too much" rather than "too little", so that people don't start depending
on behaviour that we don't want them to depend on.
Linus
next prev parent reply other threads:[~2004-09-07 14:06 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-09-07 12:09 [PATCH 1/4] copyfile: generic_sendpage Jörn Engel
2004-09-07 12:11 ` [PATCH 2/4] copyfile: sendfile Jörn Engel
2004-09-07 12:12 ` [PATCH 3/4] copyfile: sendfile_loop Jörn Engel
2004-09-07 12:15 ` [PATCH 4/4] copyfile: copyfile Jörn Engel
2004-09-07 14:06 ` Linus Torvalds [this message]
2004-09-07 14:19 ` Anton Altaparmakov
2004-09-07 14:51 ` Jörn Engel
2004-09-07 14:59 ` Linus Torvalds
2004-09-07 15:21 ` Jörn Engel
2004-09-07 15:28 ` Linus Torvalds
2004-09-09 15:04 ` Herbert Poetzl
2004-09-08 17:09 ` Steve French
2004-09-07 15:32 ` [PATCH 1/4] copyfile: generic_sendpage David Woodhouse
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=Pine.LNX.4.58.0409070656150.2299@ppc970.osdl.org \
--to=torvalds@osdl.org \
--cc=akpm@osdl.org \
--cc=joern@wohnheim.fh-wedel.de \
--cc=linux-kernel@vger.kernel.org \
--cc=smfltc@us.ibm.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 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®