Linux NFS development
 help / color / mirror / Atom feed
From: Andreas Dilger <adilger@dilger.ca>
To: Eric Biggers <ebiggers3@gmail.com>
Cc: Anna Schumaker <Anna.Schumaker@netapp.com>,
	linux-nfs@vger.kernel.org, linux-btrfs@vger.kernel.org,
	linux-fsdevel@vger.kernel.org, linux-api@vger.kernel.org,
	zab@zabbo.net, viro@zeniv.linux.org.uk, clm@fb.com,
	darrick.wong@oracle.com, mtk.manpages@gmail.com,
	andros@netapp.com, hch@infradead.org
Subject: Re: [PATCH v7 0/4] VFS: In-kernel copy system call
Date: Sat, 24 Oct 2015 23:23:20 -0600	[thread overview]
Message-ID: <68F5F620-B6E7-4DB7-ADFF-8FCFE7D88BEA@dilger.ca> (raw)
In-Reply-To: <20151024165237.GA6436@zzz>

[-- Attachment #1: Type: text/plain, Size: 2808 bytes --]


> On Oct 24, 2015, at 10:52 AM, Eric Biggers <ebiggers3@gmail.com> wrote:
> 
> A few comments:
> 
>>      if (!(file_in->f_mode & FMODE_READ) ||
>>          !(file_out->f_mode & FMODE_WRITE) ||
>>          (file_out->f_flags & O_APPEND) ||
>>          !file_out->f_op)
>>              return -EBADF;
> 
> Isn't 'f_op' always non-NULL?
> 
> If the destination file cannot be append-only, shouldn't this be documented?

Actually, wouldn't O_APPEND only be a problem if the target file wasn't
being appended to?  In other words, if the target i_size == start offset
then it should be possible to use the copy syscall on an O_APPEND file.

Cheers, Andreas

>> 	if (inode_in->i_sb != inode_out->i_sb ||
>> 		file_in->f_path.mnt != file_out->f_path.mnt)
>> 		return -EXDEV;
> 
> Doesn't the same mount already imply the same superblock?
> 
>> /*
>> * copy_file_range() differs from regular file read and write in that it
>> * specifically allows return partial success.  When it does so is up to
>> * the copy_file_range method.
>> */
> 
> What does this mean?  I thought that read() and write() can also return partial
> success.
> 
>>      f_out = fdget(fd_out);
>>      if (!f_in.file || !f_out.file) {
>>              ret = -EBADF;
>>              goto out;
>> 	}
> 
> This looked wrong at first because it may call fdput() on a 'struct fd' that was
> not successfully acquired, but it looks like it works currently because of how
> the FDPUT_FPUT flag is used.  It may be a good idea to write it the "obvious"
> way, though (use separate labels depending on which fdput()s need to happen).
> 
> 
> Other questions:
> 
> Should FMODE_PREAD or FMODE_PWRITE access be checked if the user specifies their
> own 'off_in' or 'off_out', respectively?
> 
> What is supposed to happen if the user passes provides a file descriptor to a
> non-regular file, such as a block device or char device?
> 
> If the 'in' file has fewer than 'len' bytes remaining until EOF, what is the
> expected behavior?  It looks like the btrfs implementation has different
> behavior from the pagecache implementation.
> 
> It appears the btrfs implementation has alignment restrictions --- where is this
> documented and how will users know what alignment to use?
> 
> Are copies within the same file permitted and can the ranges overlap?  The man
> page doesn't say.
> 
> It looks like the initial patch defines __NR_copy_file_range for the ARM
> architecture but doesn't actually hook that system call up for ARM; why is that?
> --
> To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


Cheers, Andreas






[-- Attachment #2: Message signed with OpenPGP using GPGMail --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2015-10-25  5:23 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-23 19:32 [PATCH v7 0/4] VFS: In-kernel copy system call Anna Schumaker
2015-10-23 19:32 ` [PATCH v7 1/4] vfs: add copy_file_range syscall and vfs helper Anna Schumaker
2015-10-27 16:03   ` Steve French
2015-10-23 19:32 ` [PATCH v7 2/4] x86: add sys_copy_file_range to syscall tables Anna Schumaker
2015-10-23 19:32 ` [PATCH v7 3/4] btrfs: add .copy_file_range file operation Anna Schumaker
2015-10-23 19:32 ` [PATCH v7 4/4] vfs: Add vfs_copy_file_range() support for pagecache copies Anna Schumaker
2015-10-23 19:32 ` [PATCH v7 5/4] copy_file_range.2: New page documenting copy_file_range() Anna Schumaker
2015-10-24 12:02   ` Pádraig Brady
2015-10-26  3:39     ` Christoph Hellwig
2015-10-26 12:19       ` Pádraig Brady
2015-10-26 21:41         ` J. Bruce Fields
2015-10-27 11:34           ` Austin S Hemmelgarn
2015-10-24  6:21 ` [PATCH v7 0/4] VFS: In-kernel copy system call Christoph Hellwig
2015-10-24 16:52 ` Eric Biggers
2015-10-25  5:23   ` Andreas Dilger [this message]
2015-10-26  3:45   ` Christoph Hellwig

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=68F5F620-B6E7-4DB7-ADFF-8FCFE7D88BEA@dilger.ca \
    --to=adilger@dilger.ca \
    --cc=Anna.Schumaker@netapp.com \
    --cc=andros@netapp.com \
    --cc=clm@fb.com \
    --cc=darrick.wong@oracle.com \
    --cc=ebiggers3@gmail.com \
    --cc=hch@infradead.org \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=mtk.manpages@gmail.com \
    --cc=viro@zeniv.linux.org.uk \
    --cc=zab@zabbo.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