mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Bernd Schubert <bernd.schubert@itwm.fraunhofer.de>
To: "Myklebust, Trond" <Trond.Myklebust@netapp.com>
Cc: Miklos Szeredi <miklos@szeredi.hu>,
	Ric Wheeler <rwheeler@redhat.com>,
	"J. Bruce Fields" <bfields@fieldses.org>,
	Zach Brown <zab@redhat.com>,
	Anna Schumaker <schumaker.anna@gmail.com>,
	Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Linux-Fsdevel <linux-fsdevel@vger.kernel.org>,
	"linux-nfs@vger.kernel.org" <linux-nfs@vger.kernel.org>,
	"Schumaker, Bryan" <Bryan.Schumaker@netapp.com>,
	"Martin K. Petersen" <mkp@mkp.net>, Jens Axboe <axboe@kernel.dk>,
	Mark Fasheh <mfasheh@suse.com>, Joel Becker <jlbec@evilplan.org>,
	Eric Wong <normalperson@yhbt.net>
Subject: Re: [RFC] extending splice for copy offloading
Date: Mon, 30 Sep 2013 22:00:42 +0200	[thread overview]
Message-ID: <5249D86A.7080603@itwm.fraunhofer.de> (raw)
In-Reply-To: <1380569663.6501.63.camel@leira.trondhjem.org>

On 09/30/2013 09:34 PM, Myklebust, Trond wrote:
> On Mon, 2013-09-30 at 20:49 +0200, Bernd Schubert wrote:
>> On 09/30/2013 08:02 PM, Myklebust, Trond wrote:
>>> On Mon, 2013-09-30 at 19:48 +0200, Bernd Schubert wrote:
>>>> On 09/30/2013 07:44 PM, Myklebust, Trond wrote:
>>>>> On Mon, 2013-09-30 at 19:17 +0200, Bernd Schubert wrote:
>>>>>> It would be nice if there would be way if the file system would get a
>>>>>> hint that the target file is supposed to be copy of another file. That
>>>>>> way distributed file systems could also create the target-file with the
>>>>>> correct meta-information (same storage targets as in-file has).
>>>>>> Well, if we cannot agree on that, file system with a custom protocol at
>>>>>> least can detect from 0 to SSIZE_MAX and then reset metadata. I'm not
>>>>>> sure if this would work for pNFS, though.
>>>>>
>>>>> splice() does not create new files. What you appear to be asking for
>>>>> lies way outside the scope of that system call interface.
>>>>>
>>>>
>>>> Sorry I know, definitely outside the scope of splice, but in the context
>>>> of offloaded file copies. So the question is, what is the best way to
>>>> address/discuss that?
>>>
>>> Why does it need to be addressed in the first place?
>>
>> An offloaded copy is still not efficient if different storage
>> servers/targets used by from-file and to-file.
>
> So?

mds1: orig-file
oss1/target1: orig-chunk1

mds1: target-file
ossN/targetN: target-chunk1

clientN: Performs the copy

Ideally, orig-chunk1 and target-chunk1 are on the same server and same 
target. Copy offload then even could done from the underlying fs, 
similiar as local splice.
If different ossN servers are used copies still have to be done over 
network by these storage servers, although the client only would need to 
initiate the copy. Still faster, but also not ideal.

>
>>>
>>> What is preventing an application from retrieving and setting this
>>> information using standard libc functions such as fstat()+open(), and
>>> supplemented with libattr attr_setf/getf(), and libacl acl_get_fd/set_fd
>>> where appropriate?
>>>
>>
>> At a minimum this requires network and metadata overhead. And while I'm
>> working on FhGFS now, I still wonder what other file system need to do -
>> for example Lustre pre-allocates storage-target files on creating a
>> file, so file layout changes mean even more overhead there.
>
> The problem you are describing is limited to a narrow set of storage
> architectures. If copy offload using splice() doesn't make sense for
> those architectures, then don't implement it for them.

But it _does_ make sense. The file system just needs a hint that a 
splice copy is going to come up.

> You might be able to provide ioctls() to do these special hinted file
> creations for those filesystems that need it, but the vast majority
> don't, and you shouldn't enforce it on them.

And exactly for that we need a standard - it does not make sense if each 
and every distributed file system implements its own 
ioctl/libattr/libacl interface for that.

>
>> Anyway, if we could agree on to use libattr or libacl to teach the file
>> system about the upcoming splice call I would be fine.
>
> libattr and libacl are generic libraries that exist to manipulate xattrs
> and acls. They do not need to contain Lustre-specific code.
>

pNFS, FhGFS, Lustre, Ceph, etc., all of them shall implement their own 
interface? And userspace needs to address all of them differently?

I'm just asking for something like a vfs ioctl SPLICE_META_COPY (sorry, 
didn't find a better name yet), which would take in-file-path and 
out-file-path and allow the file system to create out-file-path with the 
same meta-layout as in-file-path. And it would need some flags, such as 
AUTO (file system decides if it makes sense to do a local copy) and 
FORCE (always try a local copy).


Thanks,
Bernd

  reply	other threads:[~2013-09-30 20:00 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-11 17:06 Zach Brown
2013-09-11 17:06 ` [PATCH 1/3] splice: add DIRECT flag for splicing between files Zach Brown
2013-09-11 17:06 ` [PATCH 2/3] splice: add f_op->splice_direct Zach Brown
2013-09-11 17:06 ` [PATCH 3/3] btrfs: implement .splice_direct extent copying Zach Brown
2013-09-11 21:17 ` [RFC] extending splice for copy offloading Eric Wong
2013-09-16 19:44   ` Rob Landley
2013-09-19 12:59   ` Jeff Layton
2013-09-20  9:49 ` Szeredi Miklos
2013-09-25 18:38   ` Zach Brown
2013-09-25 19:02     ` Anna Schumaker
2013-09-25 19:06       ` Zach Brown
2013-09-25 19:55         ` J. Bruce Fields
2013-09-25 21:07           ` Zach Brown
2013-09-26  8:58             ` Miklos Szeredi
2013-09-26 15:34               ` J. Bruce Fields
2013-09-26 16:46                 ` Ric Wheeler
2013-09-26 18:06                 ` Miklos Szeredi
2013-09-26 19:06                   ` Zach Brown
2013-09-26 19:53                     ` Miklos Szeredi
2013-09-26 21:23                       ` Ric Wheeler
2013-09-27  4:47                         ` Miklos Szeredi
2013-09-27 14:00                           ` Ric Wheeler
2013-09-27 14:39                             ` Miklos Szeredi
2013-10-06  8:42                   ` Rob Landley
2013-09-26 18:55               ` Zach Brown
2013-09-26 21:26                 ` Ric Wheeler
2013-09-27 20:05                   ` J. Bruce Fields
2013-09-27 20:50                     ` Zach Brown
2013-09-28  5:49                       ` Miklos Szeredi
2013-09-28 15:20                         ` Myklebust, Trond
2013-09-28 21:20                           ` Ric Wheeler
2013-09-30 12:20                             ` Miklos Szeredi
2013-09-30 14:34                               ` J. Bruce Fields
2013-09-30 14:48                                 ` Ric Wheeler
2013-09-30 14:51                                 ` Miklos Szeredi
2013-09-30 14:52                                   ` Ric Wheeler
2013-09-30 15:24                                     ` Miklos Szeredi
2013-09-30 14:28                                       ` Ric Wheeler
2013-09-30 15:33                                         ` Myklebust, Trond
2013-09-30 15:38                                         ` Miklos Szeredi
2013-09-30 14:41                                           ` Ric Wheeler
2013-09-30 15:46                                             ` Miklos Szeredi
2013-09-30 14:49                                               ` Ric Wheeler
2013-09-30 15:57                                                 ` Miklos Szeredi
2013-09-30 16:31                                                   ` Miklos Szeredi
2013-09-30 17:17                                                     ` Bernd Schubert
2013-09-30 17:44                                                       ` Myklebust, Trond
2013-09-30 17:48                                                         ` Bernd Schubert
2013-09-30 18:02                                                           ` Myklebust, Trond
2013-09-30 18:49                                                             ` Bernd Schubert
2013-09-30 19:34                                                               ` Myklebust, Trond
2013-09-30 20:00                                                                 ` Bernd Schubert [this message]
2013-09-30 20:08                                                                   ` Ric Wheeler
2013-09-30 20:27                                                                     ` Myklebust, Trond
2013-09-30 20:10                                                                   ` Myklebust, Trond
2013-10-01 18:42                                               ` J. Bruce Fields
2013-10-01 19:58                                       ` Zach Brown
2013-10-02 12:58                                         ` Jan Kara
2013-10-02 13:31                                           ` David Lang
2013-12-18 12:41 ` Christoph Hellwig
2013-12-18 17:10   ` Zach Brown
2013-12-18 17:26     ` Anna Schumaker

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=5249D86A.7080603@itwm.fraunhofer.de \
    --to=bernd.schubert@itwm.fraunhofer.de \
    --cc=Bryan.Schumaker@netapp.com \
    --cc=Trond.Myklebust@netapp.com \
    --cc=axboe@kernel.dk \
    --cc=bfields@fieldses.org \
    --cc=jlbec@evilplan.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=mfasheh@suse.com \
    --cc=miklos@szeredi.hu \
    --cc=mkp@mkp.net \
    --cc=normalperson@yhbt.net \
    --cc=rwheeler@redhat.com \
    --cc=schumaker.anna@gmail.com \
    --cc=zab@redhat.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®