This repository was archived by the owner on May 28, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 1 file changed +4
-2
lines changed Expand file tree Collapse file tree 1 file changed +4
-2
lines changed Original file line number Diff line number Diff line change @@ -1162,7 +1162,7 @@ pub fn copy(from: &Path, to: &Path) -> io::Result<u64> {
11621162 } ;
11631163 if let Err ( ref copy_err) = copy_result {
11641164 match copy_err. raw_os_error ( ) {
1165- Some ( libc:: ENOSYS ) | Some ( libc:: EPERM ) => {
1165+ Some ( libc:: ENOSYS ) | Some ( libc:: EPERM ) | Some ( libc :: EOPNOTSUPP ) => {
11661166 HAS_COPY_FILE_RANGE . store ( false , Ordering :: Relaxed ) ;
11671167 }
11681168 _ => { }
@@ -1180,11 +1180,13 @@ pub fn copy(from: &Path, to: &Path) -> io::Result<u64> {
11801180 if os_err == libc:: ENOSYS
11811181 || os_err == libc:: EXDEV
11821182 || os_err == libc:: EINVAL
1183- || os_err == libc:: EPERM =>
1183+ || os_err == libc:: EPERM
1184+ || os_err == libc:: EOPNOTSUPP =>
11841185 {
11851186 // Try fallback io::copy if either:
11861187 // - Kernel version is < 4.5 (ENOSYS)
11871188 // - Files are mounted on different fs (EXDEV)
1189+ // - copy_file_range is broken in various ways on RHEL/CentOS 7 (EOPNOTSUPP)
11881190 // - copy_file_range is disallowed, for example by seccomp (EPERM)
11891191 // - copy_file_range cannot be used with pipes or device nodes (EINVAL)
11901192 assert_eq ! ( written, 0 ) ;
You can’t perform that action at this time.
0 commit comments