]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
copy: handle ENOTSUP from copy_file_range()
authorPádraig Brady <P@draigBrady.com>
Sat, 8 May 2021 16:18:54 +0000 (17:18 +0100)
committerPádraig Brady <P@draigBrady.com>
Wed, 12 May 2021 21:14:11 +0000 (22:14 +0100)
* 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

src/copy.c

index 26ab909fd283b731b5917e449b63ab7a5ecafa06..69ba94b11c7cce0d59024753aa70a7a5ea435b7b 100644 (file)
@@ -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;