From: Zach Brown <zab@redhat.com>
To: Jeff Layton <jlayton@poochiereds.net>
Cc: Trond Myklebust <trond.myklebust@primarydata.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Linux FS-devel Mailing List <linux-fsdevel@vger.kernel.org>,
linux-btrfs@vger.kernel.org,
Linux NFS Mailing List <linux-nfs@vger.kernel.org>,
linux-scsi@vger.kernel.org
Subject: Re: [PATCH RFC 1/3] vfs: add copy_file_range syscall and vfs helper
Date: Mon, 13 Apr 2015 09:32:11 -0700 [thread overview]
Message-ID: <20150413163211.GA8500@lenny.home.zabbo.net> (raw)
In-Reply-To: <20150411090402.67d22d02@tlielax.poochiereds.net>
> > >> Could we perhaps instead of a length, define a 'pos_in_start' and a
> > >> 'pos_in_end' offset (with the latter being -1 for a full-file copy)
> > >> and then return an 'loff_t' value stating where the copy ended?
> > >
> > > Well, the resulting offset will be set if the caller provided it. So
> > > they could already be getting the copied length from that. But they
> > > might not specify the offsets. Maybe they're just using the results to
> > > total up a completion indicator.
> > >
> > > Maybe we could make the length a pointer like the offsets that's set to
> > > the copied length on return.
> >
> > That works, but why do we care so much about the difference between a
> > length and an offset as a return value?
> >
>
> I think it just comes down to potential confusion for users. What's
> more useful, the number of bytes actually copied, or the offset into the
> file where the copy ended?
>
> I tend to the think an offset is more useful for someone trying to
> copy a file in chunks, particularly if the file is sparse. That gives
> them a clear place to continue the copy.
>
> So, I think I agree with Trond that phrasing this interface in terms of
> file offsets seems like it might be more useful. That also neatly
> sidesteps the size_t limitations on 32-bit platforms.
Yeah, fair enough. I'll rework it.
> > To be fair, the NFS copy offload also allows the copy to proceed out
> > of order, in which case the range of copied data could be
> > non-contiguous in the case of a failure. However neither the length
> > nor the offset case will give you the full story in that case. Any
> > return value can at best be considered to define an offset range whose
> > contents need to be checked for success/failure.
> >
>
> Yuck! How the heck do you clean up the mess if that happens? I guess
> you're just stuck redoing the copy with normal READ/WRITE?
I don't think anyone will worry about checking file contents.
Yes, technically you can get fragmented completion past the initial
contiguous region that the interface told you is done. You can get
that with O_DIRECT today.
But it's a rare case that is not worth worrying about. You'll retry at
the contiguous offset until it doesn't make progress and then fall back
to read/write.
- z
next prev parent reply other threads:[~2015-04-13 16:32 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-10 22:00 [PATCH RFC 0/3] simple copy offloading system call Zach Brown
2015-04-10 22:00 ` [PATCH RFC 1/3] vfs: add copy_file_range syscall and vfs helper Zach Brown
2015-04-10 22:36 ` Trond Myklebust
2015-04-11 0:02 ` Zach Brown
2015-04-11 0:24 ` Trond Myklebust
2015-04-11 13:04 ` Jeff Layton
2015-04-13 16:32 ` Zach Brown [this message]
2015-04-14 16:53 ` Christoph Hellwig
2015-04-14 16:58 ` Christoph Hellwig
2015-04-14 17:16 ` Anna Schumaker
2015-04-14 18:19 ` J. Bruce Fields
2015-04-14 18:22 ` Zach Brown
2015-04-14 18:29 ` J. Bruce Fields
2015-04-14 18:54 ` Zach Brown
2015-04-14 19:23 ` Christoph Hellwig
2015-04-14 20:04 ` Zach Brown
2015-04-10 23:01 ` Andreas Dilger
2015-04-10 22:00 ` [PATCH RFC 2/3] x86: add sys_copy_file_range to syscall tables Zach Brown
2015-04-10 22:00 ` [PATCH RFC 3/3] btrfs: add .copy_file_range file operation Zach Brown
2015-04-14 17:08 ` Chris Mason
2015-05-06 6:15 ` [PATCH RFC 0/3] simple copy offloading system call Michael Kerrisk
2015-05-07 2:52 ` Andy Lutomirski
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=20150413163211.GA8500@lenny.home.zabbo.net \
--to=zab@redhat.com \
--cc=jlayton@poochiereds.net \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=trond.myklebust@primarydata.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;
as well as URLs for NNTP newsgroup(s).