mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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

  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®