Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 761499 - sys-apps/portage: OSError: [Errno 22] Invalid argument in _optimized_copyfile (ZFS)
Summary: sys-apps/portage: OSError: [Errno 22] Invalid argument in _optimized_copyfile...
Status: RESOLVED FIXED
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Core (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Portage team
URL:
Whiteboard:
Keywords:
: 762709 (view as bug list)
Depends on:
Blocks: 635020
  Show dependency tree
 
Reported: 2020-12-24 15:48 UTC by Adrien Dessemond
Modified: 2023-01-17 02:39 UTC (History)
5 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Adrien Dessemond 2020-12-24 15:48:49 UTC
Under Linux 5.9.x nothing to say, everything works like a charm. However having upgraded to Linux 5.10 things started to break and portage is unable to copy  files from the sandbox.

ERROR:root:Failed to copy file: _parsed_options=Namespace(group=-1, owner=-1, mode=420, preserve_timestamps=False), source=b'README', dest_dir=b'/var/tmp/portage/sys-apps/portage-3.0.12/image/usr/share/doc/portage-3.0.12'
Traceback (most recent call last):
  File "/var/tmp/portage/._portage_reinstall_.yanstkua/bin/doins.py", line 193, in run
    copyfile(source, dest)
  File "/var/tmp/portage/._portage_reinstall_.yanstkua/lib/portage/util/file_copy/__init__.py", line 30, in _optimized_copyfile
    _file_copy(src_file.fileno(), dst_file.fileno())
OSError: [Errno 22] Invalid argument


This exact issue has been mentioned here:

https://forums.gentoo.org/viewtopic-t-1088232-start-0.html

And applying the exact workaround makes portage functional again. For the record, the workaround is to comment the try/except bloc so:


#try:
#       from portage.util.file_copy.reflink_linux import file_copy as _file_copy
#except ImportError:
_file_copy = None 

Latest glibc, recompiled dev-lang/python still no joy.

portage --info gives:


Portage 3.0.12 (python 3.9.1-final-0, default/linux/amd64/17.1/desktop/plasma, gcc-9.3.0, glibc-2.32-r6, 5.10.2-gentoo-x86_64 x86_64)
=================================================================
System uname: Linux-5.10.2-gentoo-x86_64-x86_64-AMD_Ryzen_9_3900X_12-Core_Processor-with-glibc2.32
KiB Mem:    49269248 total,  38139620 free
KiB Swap:          0 total,         0 free
Timestamp of repository gentoo: Thu, 24 Dec 2020 15:00:01 +0000
Head commit of repository gentoo: b4aceec79ba7e876cccf03912e64454a7f036349
sh bash 5.1_p4
ld GNU ld (Gentoo 2.35.1 p2) 2.35.1
app-shells/bash:          5.1_p4::gentoo
dev-java/java-config:     2.3.1::gentoo
dev-lang/perl:            5.30.3-r1::gentoo
dev-lang/python:          2.7.18-r5::gentoo, 3.7.9-r1::gentoo, 3.8.7::gentoo, 3.9.1::gentoo
dev-util/cmake:           3.19.2::gentoo
sys-apps/baselayout:      2.7-r1::gentoo
sys-apps/openrc:          0.42.1::gentoo
sys-apps/sandbox:         2.20::gentoo
sys-devel/autoconf:       2.13-r1::gentoo, 2.69-r5::gentoo
sys-devel/automake:       1.16.3-r1::gentoo
sys-devel/binutils:       2.35.1-r1::gentoo
sys-devel/gcc:            9.3.0-r2::gentoo, 10.2.0-r4::gentoo
sys-devel/gcc-config:     2.3.2-r1::gentoo
sys-devel/libtool:        2.4.6-r6::gentoo
sys-devel/make:           4.3::gentoo
sys-kernel/linux-headers: 5.10::gentoo (virtual/os-headers)
sys-libs/glibc:           2.32-r6::gentoo
Repositories:

gentoo
    location: /usr/portage
    sync-type: rsync
    sync-uri: rsync://rsync.gentoo.org/gentoo-portage
    priority: -1000
    sync-rsync-verify-max-age: 24
    sync-rsync-extra-opts: 
    sync-rsync-verify-metamanifest: yes
    sync-rsync-verify-jobs: 1

localrepo
    location: /usr/local/portage
    masters: gentoo

ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="@FREE"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O3 -pipe -march=native -fomit-frame-pointer -fopt-info-vec -mindirect-branch=thunk -mindirect-branch-register"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/lib64/libreoffice/program/sofficerc /usr/share/config /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-O3 -pipe -march=native -fomit-frame-pointer -fopt-info-vec -mindirect-branch=thunk -mindirect-branch-register"
DISTDIR="/usr/portage/distfiles"
ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR"
FCFLAGS="-O3 -pipe -march=native -fomit-frame-pointer -fopt-info-vec -mindirect-branch=thunk -mindirect-branch-register"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O3 -pipe -march=native -fomit-frame-pointer -fopt-info-vec -mindirect-branch=thunk -mindirect-branch-register"
GENTOO_MIRRORS="ftp://192.168.1.13/gentoo"
LANG="en_CA.utf8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
LINGUAS="en fr"
MAKEOPTS="-j25"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"
PORTAGE_TMPDIR="/var/tmp"
USE="X a52 aac acl acpi activities aio alsa amd64 berkdb bluetooth bluray branding bzip2 cairo cdda cdr cli crypt cups d3d9 dbus declarative dri dts dvd dvdr egl elogind emboss encode exif flac fluidsynth fortran gdbm gif gles2 gpm gtk gui iconv icu ipv6 jpeg kde kipi kwallet lcms libglvnd libnotify libtirpc lz4 lzma mad midi mikmod mng mod modplug mp3 mp4 mpeg multilib mysql ncurses nls nptl ogg openal opengl openh264 openmp openssl pam pango pcre pdf perl phonon plasma png policykit postgresq ppds pulseaudio qml qt5 readline sdl seccomp semantic-desktop spell split-usr sqlite ssh ssl startup-notification svg tcl tcpd threads tiff truetype udev udisks unicode upower usb vorbis vulkan wayland widgets wxwidgets x264 x265 xattr xcb xml xv xvid zlib zstd" ABI_X86="64" ADA_TARGET="gnat_2018" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="aes avx avx2 f16c fma3 mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="libinput" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LLVM_TARGETS="AMDGPU BPF X86" LUA_SINGLE_TARGET="lua5-1" LUA_TARGETS="lua5-1" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php7-2 php7-3 php7-4" POSTGRES_TARGETS="postgres10 postgres11" PYTHON_SINGLE_TARGET="python3_8" PYTHON_TARGETS="python3_7 python3_8 python3_9" RUBY_TARGETS="ruby25 ruby26" USERLAND="GNU" VIDEO_CARDS="amdgpu radeonsi" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  CC, CPPFLAGS, CTARGET, CXX, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
Comment 1 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2020-12-24 15:52:30 UTC
See https://github.com/gentoo/portage/pull/647.

I thought we had a bug for this, but it's a ZFS issue.
Comment 3 Mike Gilbert gentoo-dev 2020-12-31 02:40:02 UTC
*** Bug 762709 has been marked as a duplicate of this bug. ***
Comment 4 Stopi 2021-07-06 08:31:18 UTC
I confirm I got the same issue but this isn't related to Linux 5.10 this time.

I'm installing a new server, so I pulled a fresh stage3 (stage3-amd64-musl-hardened-20210704T170548Z.tar.xz) on a ZFS volume.

After chroot I can install some packeges (vim & gnu-screen worked) but others don't (eix or python) failing with the exact same error reported here.
The workaround helped and I successfully emerged eix after commenting the try/catch.

I'm using OVH's temporary 'rescue' environment, 'uname -r' gives 4.19.84-mod-std-ipv6-64-rescue
Comment 5 Adrien Dessemond 2022-01-12 13:24:29 UTC
Git the issue again this time with ZFS 2.1.2 and a Linux 5.16.0. Same fix: patch /site-packages/portage/util/file_copy/__init__.py to comment the try/except block at the beginning to leave only _file_copy = None
Comment 6 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2022-01-13 04:27:26 UTC
(In reply to Adrien Dessemond from comment #5)
> Git the issue again this time with ZFS 2.1.2 and a Linux 5.16.0. Same fix:
> patch /site-packages/portage/util/file_copy/__init__.py to comment the
> try/except block at the beginning to leave only _file_copy = None

This is a workaround again, right? Not a fix.

Could you poke with strace to see what dies? We'll likely need to report this upstream again.
Comment 7 Georgy Yakovlev archtester gentoo-dev 2022-01-13 04:41:40 UTC
5.16 support is not declared yet, you are brave =)

you can just build portage with USE=-native-extensions to exclude that codepath, without editing the ebuild.

but would be nice to see what's going on ofc.
Comment 8 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2022-01-20 17:47:47 UTC
Possibly https://github.com/openzfs/zfs/issues/12971 but I can't stress this enough:
1. If you're hitting a bug like this, you need to report it upstream to ZFS and link it back here. They're very nice!
2. Don't run kernels not yet declared as supported.
Comment 9 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2023-01-17 02:39:32 UTC
(In reply to Sam James from comment #8)
> Possibly https://github.com/openzfs/zfs/issues/12971 but I can't stress this
> enough:
> 1. If you're hitting a bug like this, you need to report it upstream to ZFS
> and link it back here. They're very nice!
> 2. Don't run kernels not yet declared as supported.

Closing per this.