about summary refs log tree commit diff
path: root/pkgs/tools/filesystems/xfsprogs/glibc-2.27.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools/filesystems/xfsprogs/glibc-2.27.patch')
-rw-r--r--pkgs/tools/filesystems/xfsprogs/glibc-2.27.patch37
1 files changed, 37 insertions, 0 deletions
diff --git a/pkgs/tools/filesystems/xfsprogs/glibc-2.27.patch b/pkgs/tools/filesystems/xfsprogs/glibc-2.27.patch
new file mode 100644
index 000000000000..757ea81c9279
--- /dev/null
+++ b/pkgs/tools/filesystems/xfsprogs/glibc-2.27.patch
@@ -0,0 +1,37 @@
+diff -Naur a/io/copy_file_range.c b/io/copy_file_range.c
+--- a/io/copy_file_range.c	1969-12-31 19:00:01.000000000 -0500
++++ b/io/copy_file_range.c	2018-02-26 07:39:21.533535821 -0500
+@@ -42,24 +42,6 @@
+ "));
+ }
+ 
+-static loff_t
+-copy_file_range(int fd, loff_t *src, loff_t *dst, size_t len)
+-{
+-	loff_t ret;
+-
+-	do {
+-		ret = syscall(__NR_copy_file_range, fd, src, file->fd, dst, len, 0);
+-		if (ret == -1) {
+-			perror("copy_range");
+-			return errno;
+-		} else if (ret == 0)
+-			break;
+-		len -= ret;
+-	} while (len > 0);
+-
+-	return 0;
+-}
+-
+ static off64_t
+ copy_src_filesize(int fd)
+ {
+@@ -130,7 +112,7 @@
+ 		copy_dst_truncate();
+ 	}
+ 
+-	ret = copy_file_range(fd, &src, &dst, len);
++	ret = copy_file_range(fd, &src, file->fd, &dst, len, 0);
+ 	close(fd);
+ 	return ret;
+ }