From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from bombadil.infradead.org ([198.137.202.133]:32862 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727588AbeJZClw (ORCPT ); Thu, 25 Oct 2018 22:41:52 -0400 Date: Thu, 25 Oct 2018 11:08:00 -0700 From: Matthew Wilcox To: Olga Kornievskaia Cc: Amir Goldstein , trond.myklebust@hammerspace.com, Anna Schumaker , viro@zeniv.linux.org.uk, Steve French , Miklos Szeredi , linux-nfs , linux-fsdevel@vger.kernel.org, linux-cifs@vger.kernel.org, linux-unionfs@vger.kernel.org, linux-man@vger.kernel.org Subject: Re: [PATCH 1/1] man-page: copy_file_range(2) allow for cross-device copies Message-ID: <20181025180800.GJ25444@bombadil.infradead.org> References: <20181024195837.35532-1-olga.kornievskaia@gmail.com> <20181024195837.35532-3-olga.kornievskaia@gmail.com> <20181025172426.GI25444@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Thu, Oct 25, 2018 at 01:47:21PM -0400, Olga Kornievskaia wrote: > On Thu, Oct 25, 2018 at 1:24 PM Matthew Wilcox wrote: > > > > On Thu, Oct 25, 2018 at 07:28:10AM +0300, Amir Goldstein wrote: > > > On Wed, Oct 24, 2018 at 10:59 PM Olga Kornievskaia > > > wrote: > > > > > > > > From: Olga Kornievskaia > > > > > > > > A proposed VFS change removes the check for the files to reside > > > > under the same file system. Instead, a file system driver implementation > > > > is allowed to perform a cross-device copy_file_range() and if > > > > the file system fails to support it instead fallback to doing > > > > a do_splice copy. Therefore, EXDEV is no longer a possible error. > > > > > > > > Signed-off-by: Olga Kornievskaia > > > > --- > > > > man2/copy_file_range.2 | 7 ++----- > > > > 1 file changed, 2 insertions(+), 5 deletions(-) > > > > > > > > diff --git a/man2/copy_file_range.2 b/man2/copy_file_range.2 > > > > index 20374ab..723b2d0 100644 > > > > --- a/man2/copy_file_range.2 > > > > +++ b/man2/copy_file_range.2 > > > > @@ -39,7 +39,8 @@ The > > > > .BR copy_file_range () > > > > system call performs an in-kernel copy between two file descriptors > > > > without the additional cost of transferring data from the kernel to user space > > > > -and then back into the kernel. > > > > +and then back into the kernel. Since kernel version 4.21(???) passed in > > > > +file descriptors are not required to be under the same mounted file system. > > > > It copies up to > > > > .I len > > > > bytes of data from file descriptor > > > > @@ -128,10 +129,6 @@ Out of memory. > > > > .B ENOSPC > > > > There is not enough space on the target filesystem to complete the copy. > > > > .TP > > > > -.B EXDEV > > > > -The files referred to by > > > > -.IR file_in " and " file_out > > > > -are not on the same mounted filesystem. > > > > > > Man page serves users of old kernels as well. You should not delete this > > > expected error, but you can add "... and kernel does not support cross > > > filesystem copy". > > > > I'd rather see this worded as: > > > > .B EXDEV > > The files referred to by > > .IR file_in " and " file_out > > -are not on the same mounted filesystem. > > +cannot be copied due to being on incompatible filesystems > > Why should this be changed to "incompatible filesystems". Existing > code doesn't support not only incompatibly filesystem but also cross > device of compatible file systems. And this error is only left for the > old kernels. In the new kernel, the error EXDEV will never be > returned. If I try to copy_file_range() between an NFS filesystem and a CIFS filesystem with a new kernel, what error do I get?