From: Jeff Layton <jlayton@redhat.com>
To: Matthew Wilcox <willy@infradead.org>,
Olga Kornievskaia <olga.kornievskaia@gmail.com>
Cc: linux-fsdevel@vger.kernel.org, linux-nfs@vger.kernel.org,
fweimer@redhat.com, smfrench@gmail.com
Subject: Re: [PATCH v1 02/11] VFS permit cross device vfs_copy_file_range
Date: Sun, 21 Oct 2018 10:10:22 -0400 [thread overview]
Message-ID: <b2f656abd4bac72f7ba896e1d6af1b944d28dab9.camel@redhat.com> (raw)
In-Reply-To: <20181019175822.GB28891@bombadil.infradead.org>
On Fri, 2018-10-19 at 10:58 -0700, Matthew Wilcox wrote:
> On Fri, Oct 19, 2018 at 11:30:18AM -0400, Olga Kornievskaia wrote:
> > +++ b/Documentation/filesystems/vfs.txt
> > @@ -958,7 +958,9 @@ otherwise noted.
> >
> > fallocate: called by the VFS to preallocate blocks or punch a hole.
> >
> > - copy_file_range: called by the copy_file_range(2) system call.
> > + copy_file_range: called by copy_file_range(2) system call. This method
> > + works on two file descriptors that might reside on
> > + different superblocks of the same type of file system.
>
> I don't think this text is explicit enough about what has changed, and I
> think this is the wrong place for it. I think there should be a paragraph
> in Documentation/filesystems/porting and it should follow the current style
> in there.
>
> > @@ -1591,7 +1587,8 @@ ssize_t vfs_copy_file_range(struct file *file_in, loff_t pos_in,
> > * Try cloning first, this is supported by more file systems, and
> > * more efficient if both clone and copy are supported (e.g. NFS).
> > */
> > - if (file_in->f_op->clone_file_range) {
> > + if (inode_in->i_sb == inode_out->i_sb &&
> > + file_in->f_op->clone_file_range) {
>
> This reads weirdly to me. I know it's the same order the tests were done
> in before, but it would feel more natural to me to test:
>
> if (file_in->f_op->clone_file_range &&
> inode_in->i_sb == inode_out->i_sb)
>
> Am I just suffering from "I would have done this differently"itis, or
> is it unnatural?
>
> > @@ -1600,10 +1597,12 @@ ssize_t vfs_copy_file_range(struct file *file_in, loff_t pos_in,
> > }
> > }
> >
> > - if (file_out->f_op->copy_file_range) {
> > + if (file_out->f_op->copy_file_range &&
> > + (file_in->f_op->copy_file_range ==
> > + file_out->f_op->copy_file_range)) {
>
> Can we avoid this extra test here? I know the various stamdards groups
> including T10 and the IETF have been trying to define a universal
> identifier for the same blob of storage, no matter how it's accessed;
> potentially allowing access to the same storage across iSCSI, CIFS
> and NFS. If we ever get to a point where we support that (and I am
> dubious), we'd want to remove this test again, and have to revalidate
> all the filesystems.
>
Agreed. I think this really ought to be left up to the lower fs. Pass
the op both struct file pointers and let it sort it out.
We just need to document the expectation that file copy_file_range ops
vet file_in carefully as it could be from anything, and have them return
an appropriate error code if it's not something they can deal with.
--
Jeff Layton <jlayton@redhat.com>
next prev parent reply other threads:[~2018-10-21 22:24 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-19 15:30 [PATCH v1 01/11] fs: Don't copy beyond the end of the file Olga Kornievskaia
2018-10-19 15:30 ` [PATCH v1 02/11] VFS permit cross device vfs_copy_file_range Olga Kornievskaia
2018-10-19 15:54 ` Amir Goldstein
2018-10-19 16:14 ` Amir Goldstein
2018-10-19 17:44 ` Matthew Wilcox
2018-10-19 17:58 ` Amir Goldstein
2018-10-19 16:24 ` Olga Kornievskaia
2018-10-19 17:04 ` Olga Kornievskaia
2018-10-20 1:37 ` Steve French
2018-10-19 17:58 ` Matthew Wilcox
2018-10-19 18:47 ` Olga Kornievskaia
2018-10-19 19:06 ` Matthew Wilcox
2018-10-21 13:01 ` Jeff Layton
2018-10-22 18:39 ` Olga Kornievskaia
2018-10-21 14:10 ` Jeff Layton [this message]
2018-10-20 4:05 ` Al Viro
2018-10-20 8:54 ` Amir Goldstein
2018-10-22 18:45 ` Olga Kornievskaia
2018-10-22 19:06 ` Matthew Wilcox
2018-10-22 19:34 ` Olga Kornievskaia
2018-10-22 19:48 ` Amir Goldstein
2018-10-22 20:29 ` Matthew Wilcox
2018-10-22 23:39 ` Jeff Layton
2018-10-23 6:05 ` Amir Goldstein
2018-10-23 15:03 ` Olga Kornievskaia
2018-10-23 15:30 ` Olga Kornievskaia
2018-10-23 17:16 ` Olga Kornievskaia
2018-10-24 11:17 ` Jeff Layton
2018-10-24 19:59 ` Olga Kornievskaia
2018-10-25 4:58 ` Amir Goldstein
2018-10-25 15:58 ` Olga Kornievskaia
2018-10-25 16:00 ` Olga Kornievskaia
2018-10-25 16:57 ` Amir Goldstein
2018-10-23 15:39 ` Matthew Wilcox
2018-10-24 11:32 ` Amir Goldstein
[not found] <20181019152932.32462-1-olga.kornievskaia@gmail.com>
[not found] ` <20181019152932.32462-3-olga.kornievskaia@gmail.com>
2018-10-19 16:14 ` Trond Myklebust
2018-10-19 16:26 ` Olga Kornievskaia
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=b2f656abd4bac72f7ba896e1d6af1b944d28dab9.camel@redhat.com \
--to=jlayton@redhat.com \
--cc=fweimer@redhat.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=olga.kornievskaia@gmail.com \
--cc=smfrench@gmail.com \
--cc=willy@infradead.org \
/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;
as well as URLs for NNTP newsgroup(s).