linux-api.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: bfields@fieldses.org (J. Bruce Fields)
To: "Pádraig Brady" <P@draigBrady.com>
Cc: Christoph Hellwig <hch@infradead.org>,
	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
Subject: Re: [PATCH v7 5/4] copy_file_range.2: New page documenting copy_file_range()
Date: Mon, 26 Oct 2015 17:41:10 -0400	[thread overview]
Message-ID: <20151026214110.GA9232@fieldses.org> (raw)
In-Reply-To: <562E1A55.4050409@draigBrady.com>

On Mon, Oct 26, 2015 at 12:19:33PM +0000, Pádraig Brady wrote:
> On 26/10/15 03:39, Christoph Hellwig wrote:
> > On Sat, Oct 24, 2015 at 01:02:21PM +0100, P??draig Brady wrote:
> >> I'm a bit worried about the sparse expansion and default reflinking
> >> which might preclude cp(1) from using this call in most cases, but I will
> >> test and try to use it. coreutils has heuristics for determining if files
> >> are remote, which we might use to restrict to that use case.
> > 
> > Can you explain why reflinking and hole expansion are an issue if done
> > locally and not if done remotely?  I'd really like to make the call as
> > usable as possible for everyone, but we really need clear sem�ntics for
> > that.
> 
> Fair point on local vs remote. I was just assuming that remote
> copy offload would not do reflinking on the backend, or at
> least wasn't an exposed option over the remote interface.

The server could definitely do a reflink.  More generally, from the
description of the NFS COPY operation:

	https://tools.ietf.org/html/draft-ietf-nfsv4-minorversion2-39#page-64

	If the copy completes successfully, either synchronously or
	asynchronously, the data copied from the source file to the
	destination file MUST appear identical to the NFS client.
	However, the NFS server's on disk representation of the data in
	the source file and destination file MAY differ.  For example,
	the NFS server might encrypt, compress, deduplicate, or
	otherwise represent the on disk data in the source and
	destination file differently.

> I get the impression that you think reflinking should be hidden
> from the user, i.e. cp(1) should not have had the --reflink option
> (for the last 6 years)?  I'm not convinced of that, and even so
> I think lower level interfaces would benefit from finer grained options.
> This would be especially useful since there is no general interface
> to reflink at present. I was happy with the reflink control options,
> thinking the extra control could allow cp to use this by default.

Maybe that's a case for Christoph's "clone" operation.

I agree with him that it makes sense to allow the filesystem to
implement "copy" using reflink or similar tricks under the covers.  And
that in fact it's difficult to imagine how you'd prevent that in the
presence of layers of filesystem or block protocols underneath.

That "cp" flag seems strange to me, but if "cp" wants to take advantage
of a copy system call while continuing to make something like that
distinction then I suppose it could fallocate the destination range file
after the copy.

--b.

> > Also note that Annas current series allows for hole filling - any decent
> > implementation should not do them, but that's really a quality of
> > implementation and not an interface issue.
> 
> I think you're saying the default `cp --sparse=auto` operation
> could rely on copy_file_range(...complete file...), while
> cp --sparse={always,never} would have to iterate over the
> file, punching or filling holes as appropriate. I thought
> Anna indicated differently wrt splice filling holes by default.
> 
> TBH I'm not clear on the semantics of the current implementation,
> so need to test the above in various cases.
> 
> thanks,
> Pádraig.
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
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

  reply	other threads:[~2015-10-26 21:41 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
     [not found] ` <1445628736-13058-1-git-send-email-Anna.Schumaker-ZwjVKphTwtPQT0dZR+AlfA@public.gmane.org>
2015-10-23 19:32   ` [PATCH v7 1/4] vfs: add copy_file_range syscall and vfs helper Anna Schumaker
     [not found]     ` <1445628736-13058-2-git-send-email-Anna.Schumaker-ZwjVKphTwtPQT0dZR+AlfA@public.gmane.org>
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 5/4] copy_file_range.2: New page documenting copy_file_range() Anna Schumaker
2015-10-24 12:02     ` Pádraig Brady
     [not found]       ` <562B734D.50800-V8g9lnOeT5ydJdNcDFJN0w@public.gmane.org>
2015-10-26  3:39         ` Christoph Hellwig
     [not found]           ` <20151026033925.GA9945-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-10-26 12:19             ` Pádraig Brady
2015-10-26 21:41               ` J. Bruce Fields [this message]
     [not found]                 ` <20151026214110.GA9232-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-10-27 11:34                   ` Austin S Hemmelgarn
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-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
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=20151026214110.GA9232@fieldses.org \
    --to=bfields@fieldses.org \
    --cc=Anna.Schumaker@netapp.com \
    --cc=P@draigBrady.com \
    --cc=andros@netapp.com \
    --cc=clm@fb.com \
    --cc=darrick.wong@oracle.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;
as well as URLs for NNTP newsgroup(s).