From: Pádraig Brady Date: Sat, 8 May 2021 16:18:54 +0000 (+0100) Subject: copy: handle ENOTSUP from copy_file_range() X-Git-Tag: v9.0~106 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8ec0d1799e19a079b8a661c6bb69f6c58e52f1aa;p=thirdparty%2Fcoreutils.git copy: handle ENOTSUP from copy_file_range() * src/copy.c (sparse_copy): Ensure we fall back to a standard copy if copy_file_range() returns ENOTSUP. This generally is best checked when checking ENOSYS, but it also seems to be a practical concern on Centos 7, as a quick search gave https://bugzilla.redhat.com/1840284 --- diff --git a/src/copy.c b/src/copy.c index 26ab909fd2..69ba94b11c 100644 --- a/src/copy.c +++ b/src/copy.c @@ -290,8 +290,9 @@ sparse_copy (int src_fd, int dest_fd, char *buf, size_t buf_size, } if (n_copied < 0) { - if (errno == ENOSYS || errno == EINVAL - || errno == EBADF || errno == EXDEV || errno == ETXTBSY) + if (errno == ENOSYS || is_ENOTSUP (errno) + || errno == EINVAL || errno == EBADF + || errno == EXDEV || errno == ETXTBSY) break; if (errno == EINTR) n_copied = 0;