From: Olaf Leidinger Date: Mon, 24 Jan 2022 15:12:57 +0000 (+0100) Subject: Fall back if copy_file_range fails with EINVAL X-Git-Tag: archive/raspbian/2020.8-2+rpi1+deb11u1^2~6 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=628fa27cce0a68d0483ab1b54db477256b172007;p=ostree.git 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. Bug: https://gitlab.gnome.org/GNOME/libglnx/-/issues/3 Bug: https://github.com/ostreedev/ostree/issues/2525 Bug: https://github.com/flatpak/flatpak/issues/4673 Bug-Debian: https://bugs.debian.org/1004467 Applied-upstream: libglnx commit:24231a956a4b849087fbf01173cdebb53e1bd60b Applied-upstream: libostree 2022.2, commit:0ebf9d9f64647d0b8b95cda112c7854be6f58ed3 Gbp-Pq: Name Fall-back-if-copy_file_range-fails-with-EINVAL.patch --- diff --git a/libglnx/glnx-fdio.c b/libglnx/glnx-fdio.c index 422bc2dd..0bb26f4e 100644 --- a/libglnx/glnx-fdio.c +++ b/libglnx/glnx-fdio.c @@ -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.