Fall back if copy_file_range fails with EINVAL

Although EINVAL usually indicates a programming error, ecryptfs (and
possibly other stacked filesystems) returns EINVAL for attempts to
copy_file_range() or sendfile() between files on that filesystem.

Resolves: https://gitlab.gnome.org/GNOME/libglnx/-/issues/3
This commit is contained in:
Olaf Leidinger
2022-01-24 16:12:57 +01:00
committed by Simon McVittie
parent ef502aabf7
commit 24231a956a

View File

@@ -829,7 +829,7 @@ glnx_regfile_copy_bytes (int fdf, int fdt, off_t max_bytes)
have_cfr = 0;
try_cfr = false;
}
else if (G_IN_SET (errno, EXDEV, EOPNOTSUPP))
else if (G_IN_SET (errno, EXDEV, EINVAL, EOPNOTSUPP))
/* We won't try cfr again for this run, but let's be
* conservative and not mark it as available/unavailable until
* we know for sure.