All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alejandro Colomar <alx.manpages@gmail.com>
To: mtk.manpages@gmail.com
Cc: Alejandro Colomar <alx.manpages@gmail.com>,
	linux-man@vger.kernel.org, Luis Henriques <lhenriques@suse.de>,
	Amir Goldstein <amir73il@gmail.com>,
	Greg KH <gregkh@linuxfoundation.org>,
	Anna Schumaker <anna.schumaker@netapp.com>,
	Jeff Layton <jlayton@kernel.org>,
	Steve French <sfrench@samba.org>,
	Miklos Szeredi <miklos@szeredi.hu>,
	Trond Myklebust <trond.myklebust@hammerspace.com>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	"Darrick J. Wong" <darrick.wong@oracle.com>,
	Dave Chinner <dchinner@redhat.com>,
	Nicolas Boichat <drinkcat@chromium.org>,
	Ian Lance Taylor <iant@google.com>,
	Luis Lozano <llozano@chromium.org>,
	Andreas Dilger <adilger@dilger.ca>,
	Olga Kornievskaia <aglo@umich.edu>,
	Christoph Hellwig <hch@infradead.org>,
	ceph-devel <ceph-devel@vger.kernel.org>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	CIFS <linux-cifs@vger.kernel.org>,
	samba-technical <samba-technical@lists.samba.org>,
	linux-fsdevel <linux-fsdevel@vger.kernel.org>,
	Linux NFS Mailing List <linux-nfs@vger.kernel.org>,
	Walter Harms <wharms@bfs.de>
Subject: [PATCH] copy_file_range.2: Update cross-filesystem support for 5.12
Date: Sun,  9 May 2021 23:39:06 +0200	[thread overview]
Message-ID: <20210509213930.94120-12-alx.manpages@gmail.com> (raw)
In-Reply-To: <20210509213930.94120-1-alx.manpages@gmail.com>

Linux 5.12 fixes a regression.

Cross-filesystem (introduced in 5.3) copies were buggy.

Move the statements documenting cross-fs to BUGS.
Kernels 5.3..5.11 should be patched soon.

State version information for some errors related to this.

Reported-by: Luis Henriques <lhenriques@suse.de>
Reported-by: Amir Goldstein <amir73il@gmail.com>
Related: <https://lwn.net/Articles/846403/>
Cc: Greg KH <gregkh@linuxfoundation.org>
Cc: Michael Kerrisk <mtk.manpages@gmail.com>
Cc: Anna Schumaker <anna.schumaker@netapp.com>
Cc: Jeff Layton <jlayton@kernel.org>
Cc: Steve French <sfrench@samba.org>
Cc: Miklos Szeredi <miklos@szeredi.hu>
Cc: Trond Myklebust <trond.myklebust@hammerspace.com>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: "Darrick J. Wong" <darrick.wong@oracle.com>
Cc: Dave Chinner <dchinner@redhat.com>
Cc: Nicolas Boichat <drinkcat@chromium.org>
Cc: Ian Lance Taylor <iant@google.com>
Cc: Luis Lozano <llozano@chromium.org>
Cc: Andreas Dilger <adilger@dilger.ca>
Cc: Olga Kornievskaia <aglo@umich.edu>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: ceph-devel <ceph-devel@vger.kernel.org>
Cc: linux-kernel <linux-kernel@vger.kernel.org>
Cc: CIFS <linux-cifs@vger.kernel.org>
Cc: samba-technical <samba-technical@lists.samba.org>
Cc: linux-fsdevel <linux-fsdevel@vger.kernel.org>
Cc: Linux NFS Mailing List <linux-nfs@vger.kernel.org>
Cc: Walter Harms <wharms@bfs.de>
Signed-off-by: Alejandro Colomar <alx.manpages@gmail.com>
---
 man2/copy_file_range.2 | 27 +++++++++++++++++++++++----
 1 file changed, 23 insertions(+), 4 deletions(-)

diff --git a/man2/copy_file_range.2 b/man2/copy_file_range.2
index 467a16300..843e02241 100644
--- a/man2/copy_file_range.2
+++ b/man2/copy_file_range.2
@@ -169,6 +169,9 @@ Out of memory.
 .B ENOSPC
 There is not enough space on the target filesystem to complete the copy.
 .TP
+.BR EOPNOTSUPP " (since Linux 5.12)"
+The filesystem does not support this operation.
+.TP
 .B EOVERFLOW
 The requested source or destination range is too large to represent in the
 specified data types.
@@ -184,10 +187,17 @@ or
 .I fd_out
 refers to an active swap file.
 .TP
-.B EXDEV
+.BR EXDEV " (before Linux 5.3)"
+The files referred to by
+.IR fd_in " and " fd_out
+are not on the same filesystem.
+.TP
+.BR EXDEV " (since Linux 5.12)"
 The files referred to by
 .IR fd_in " and " fd_out
-are not on the same mounted filesystem (pre Linux 5.3).
+are not on the same filesystem,
+and the source and target filesystems are not of the same type,
+or do not support cross-filesystem copy.
 .SH VERSIONS
 The
 .BR copy_file_range ()
@@ -200,8 +210,11 @@ Areas of the API that weren't clearly defined were clarified and the API bounds
 are much more strictly checked than on earlier kernels.
 Applications should target the behaviour and requirements of 5.3 kernels.
 .PP
-First support for cross-filesystem copies was introduced in Linux 5.3.
-Older kernels will return -EXDEV when cross-filesystem copies are attempted.
+Since Linux 5.12,
+cross-filesystem copies can be achieved
+when both filesystems are of the same type,
+and that filesystem implements support for it.
+See BUGS for behavior prior to 5.12.
 .SH CONFORMING TO
 The
 .BR copy_file_range ()
@@ -226,6 +239,12 @@ gives filesystems an opportunity to implement "copy acceleration" techniques,
 such as the use of reflinks (i.e., two or more inodes that share
 pointers to the same copy-on-write disk blocks)
 or server-side-copy (in the case of NFS).
+.SH BUGS
+In Linux kernels 5.3 to 5.11,
+cross-filesystem copies were implemented by the kernel,
+if the operation was not supported by individual filesystems.
+However, on some virtual filesystems,
+the call failed to copy, while still reporting success.
 .SH EXAMPLES
 .EX
 #define _GNU_SOURCE
-- 
2.31.1


  parent reply	other threads:[~2021-05-09 21:44 UTC|newest]

Thread overview: 79+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-09 21:38 [PATCH] fflush.3: SEE ALSO: Add fpurge(3) Alejandro Colomar
2021-05-09 21:38 ` [PATCH] scripts/bash_aliases, scripts/modified_pages.sh: Move scripts/modified_pages.sh to a function man_gitstaged() Alejandro Colomar
2021-05-09 23:27   ` Michael Kerrisk (man-pages)
2021-05-09 21:38 ` [PATCH] scripts/bash_aliases: man_gitstaged(): Script around a porcelain git command Alejandro Colomar
2021-05-09 23:31   ` Michael Kerrisk (man-pages)
2021-05-09 21:38 ` [PATCH] basename.3: SYNOPSIS: Add missing 'const' Alejandro Colomar
2021-05-09 23:59   ` Michael Kerrisk (man-pages)
2021-05-11  7:34     ` Alejandro Colomar (man-pages)
2021-05-09 21:38 ` [PATCH] dladdr.3: " Alejandro Colomar
2021-05-09 23:20   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] open.2: Fix bug in linkat(2) call example Alejandro Colomar
2021-05-10  0:50   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] malloc_usable_size.3: ffix Alejandro Colomar
2021-05-09 23:10   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] getutmp.3: ffix Alejandro Colomar
2021-05-09 23:10   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] on_exit.3: ffix Alejandro Colomar
2021-05-09 23:11   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] perror.3: ffix Alejandro Colomar
2021-05-09 23:12   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` Alejandro Colomar [this message]
2021-05-10  0:01   ` [PATCH] copy_file_range.2: Update cross-filesystem support for 5.12 Michael Kerrisk (man-pages)
2021-05-10  4:26     ` Amir Goldstein
2021-05-10 16:34       ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] sched_get_priority_max.2, open_memstream.3: tfix Alejandro Colomar
2021-05-09 23:19   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] __ppc_get_timebase.3: ffix Alejandro Colomar
2021-05-09 23:14   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] scripts/bash_aliases: Make man_lsfunc() more robust; Add sed_rm_ccomments() Alejandro Colomar
2021-05-09 23:32   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] scripts/bash_aliases: Add man_lsvar(), similar to man_lsfunc() but lists variables Alejandro Colomar
2021-05-09 23:32   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] pthread_attr_setinheritsched.3: SYNOPSIS: Use 'restrict' in prototypes Alejandro Colomar
2021-05-09 23:53   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] pthread_attr_setschedparam.3: " Alejandro Colomar
2021-05-09 23:53   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] strsignal.3: ffix Alejandro Colomar
2021-05-09 23:14   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] strsignal.3: SYNOPSIS: Add missing 'const' Alejandro Colomar
2021-05-09 23:16   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] rpc.3: SYNOPSIS: Fix prototypes (misc.) Alejandro Colomar
2021-05-09 23:50   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] pthread_getattr_default_np.3: SYNOPSIS: Add missing 'const' Alejandro Colomar
2021-05-09 23:19   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] pthread_mutexattr_setrobust.3: SYNOPSIS: Remove incorrect 'const' Alejandro Colomar
2021-05-09 23:18   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] tzset.3: ffix Alejandro Colomar
2021-05-09 23:16   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] xdr.3: SYNOPSIS: Fix prototype types Alejandro Colomar
2021-05-09 23:51   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] scripts/bash_aliases: man_section(): Accept multiple sections Alejandro Colomar
2021-05-09 23:33   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] scripts/bash_aliases: Fix error messages Alejandro Colomar
2021-05-09 23:33   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] epoll_wait.2: Move subsection to NOTES from BUGS Alejandro Colomar
2021-05-09 23:52   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] bswap.3: bswap_*() are implemented using functions Alejandro Colomar
2021-05-09 23:55   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] cpow.3: Use 'complex' after the type consistently Alejandro Colomar
2021-05-09 23:49   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] clone.2: tfix Alejandro Colomar
2021-05-09 23:17   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] scripts/bash_aliases: srcfix Alejandro Colomar
2021-05-09 23:34   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] Makefile: Fix bug when running in parallel Alejandro Colomar
2021-05-09 23:39   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] .gitignore: Add file Alejandro Colomar
2021-05-10  1:02   ` Michael Kerrisk (man-pages)
2021-05-10  7:15     ` Alejandro Colomar (man-pages)
2021-05-10 16:28       ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] system_data_types.7: tfix Alejandro Colomar
2021-05-09 23:46   ` Michael Kerrisk (man-pages)
2021-05-09 21:39 ` [PATCH] Makefile: Simplify error handling Alejandro Colomar
2021-05-09 23:45   ` Michael Kerrisk (man-pages)
2021-05-10  6:53     ` Alejandro Colomar (man-pages)
2021-05-10  1:03 ` [PATCH] fflush.3: SEE ALSO: Add fpurge(3) Michael Kerrisk (man-pages)
     [not found] ` <20210509213930.94120-33-alx.manpages@gmail.com>
     [not found]   ` <9f4a8c0c-ced3-4192-05a0-d126afda3285@gmail.com>
2021-05-10  7:13     ` [PATCH] Makefile: Use standard features (IMPORTANT: default prefix changed) Alejandro Colomar (man-pages)
2021-05-10 16:33       ` Michael Kerrisk (man-pages)
2021-05-10 16:41         ` Alejandro Colomar (man-pages)

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=20210509213930.94120-12-alx.manpages@gmail.com \
    --to=alx.manpages@gmail.com \
    --cc=adilger@dilger.ca \
    --cc=aglo@umich.edu \
    --cc=amir73il@gmail.com \
    --cc=anna.schumaker@netapp.com \
    --cc=ceph-devel@vger.kernel.org \
    --cc=darrick.wong@oracle.com \
    --cc=dchinner@redhat.com \
    --cc=drinkcat@chromium.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=hch@infradead.org \
    --cc=iant@google.com \
    --cc=jlayton@kernel.org \
    --cc=lhenriques@suse.de \
    --cc=linux-cifs@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-man@vger.kernel.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=llozano@chromium.org \
    --cc=miklos@szeredi.hu \
    --cc=mtk.manpages@gmail.com \
    --cc=samba-technical@lists.samba.org \
    --cc=sfrench@samba.org \
    --cc=trond.myklebust@hammerspace.com \
    --cc=viro@zeniv.linux.org.uk \
    --cc=wharms@bfs.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.