summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/basic/copy.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/basic/copy.c b/src/basic/copy.c
index 18a245a92c..96d059d0e5 100644
--- a/src/basic/copy.c
+++ b/src/basic/copy.c
@@ -38,23 +38,25 @@
#define COPY_BUFFER_SIZE (16*1024u)
-static ssize_t try_copy_file_range(int fd_in, loff_t *off_in,
- int fd_out, loff_t *off_out,
- size_t len,
- unsigned int flags) {
+static ssize_t try_copy_file_range(
+ int fd_in, loff_t *off_in,
+ int fd_out, loff_t *off_out,
+ size_t len,
+ unsigned int flags) {
+
static int have = -1;
ssize_t r;
- if (have == false)
+ if (have == 0)
return -ENOSYS;
r = copy_file_range(fd_in, off_in, fd_out, off_out, len, flags);
- if (_unlikely_(have < 0))
+ if (have < 0)
have = r >= 0 || errno != ENOSYS;
- if (r >= 0)
- return r;
- else
+ if (r < 0)
return -errno;
+
+ return r;
}
enum {