My Fedora IoT 42 server recently started misbehaving, and checking the system journal showed lots of fs-verity: FILE CORRUPTED! errors. I first noticed my system misbehaving (services failing, unable to log in) around 18 hours after it had last been updated and rebooted, but searching the system journal showed that the errors first started immediately after it had rebooted for an update. Rebooting the system and running btrfs scrub had no effect; the fs-verity: FILE CORRUPTED! errors kept showing up.
Shell transcript while debugging
$ sudo btrfs scrub start -B -d /dev/vda4
Starting scrub on devid 1
Scrub device /dev/vda4 (id 1) done
Scrub started: Fri Sep 26 00:42:26 2025
Status: finished
Duration: 0:00:22
Total to scrub: 113.66GiB
Rate: 5.17GiB/s
Error summary: no errors found
$ sudo cat /sysroot/ostree/repo/config
[core]
repo_version=1
mode=bare
[sysroot]
readonly=true
bootloader=none
[ex-integrity]
composefs=yes
$ sudo ostree fsck --all --verbose
OT: using fuse: 0
OT: using fuse: 0
Validating refs...
Validating refs in collections...
Enumerating commits...
Verifying content integrity of 88 commit objects...
OT: Traversing commit 5c244a5b03513483fb3dd03b521fa6a9dbf716627d9c1b1ba59c9308565ecc7f
[...]
OT: Traversing commit 0a34ad1b46737209a1d0d8baea456075893a4e9aa4a66f5981623112247d515f
OT: Found dirtree object 7861de45bf7811062f6cf341c7999a7733d8cc7564abdc03bfc14cab434cd290
OT: Found dirmeta object 446a0ef11b7cc167f3b603e585c7eeeeb675faa412d5ec73f62988eb0b6c5488
OT: Traversing dirtree 7861de45bf7811062f6cf341c7999a7733d8cc7564abdc03bfc14cab434cd290
fish: Job 1, 'sudo ostree fsck --all --verbose' terminated by signal SIGBUS (Misaligned address error)
$ sudo btrfs inspect-internal inode-resolve 10909667 /sysroot/ # From dmesg
/sysroot//ostree/repo/objects/78/61de45bf7811062f6cf341c7999a7733d8cc7564abdc03bfc14cab434cd290.dirtree
$ sudo cat /sysroot//ostree/repo/objects/78/61de45bf7811062f6cf341c7999a7733d8cc7564abdc03bfc14cab434cd290.dirtree
cat: /sysroot//ostree/repo/objects/78/61de45bf7811062f6cf341c7999a7733d8cc7564abdc03bfc14cab434cd290.dirtree: Input/output error
$ cat /etc/os-release
NAME="Fedora Linux"
VERSION="42 (IoT Edition)"
RELEASE_TYPE=stable
ID=fedora
VERSION_ID=42
VERSION_CODENAME=""
PLATFORM_ID="platform:f42"
PRETTY_NAME="Fedora Linux 42 (IoT Edition)"
ANSI_COLOR="0;38;2;60;110;180"
LOGO=fedora-logo-icon
CPE_NAME="cpe:/o:fedoraproject:fedora:42"
HOME_URL="https://fedoraproject.org/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f42/"
SUPPORT_URL="https://ask.fedoraproject.org/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=42
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=42
SUPPORT_END=2026-05-13
VARIANT="IoT Edition"
VARIANT_ID=iot
$ rpm --query --queryformat='%{NAME}\t%{VERSION}\n' --all | grep -Ev 'perl|python' sort | column --table
aardvark-dns 1.16.0
acl 2.3.2
alternatives 1.33
audit-libs 4.1.1
audit-rules 4.1.1
authselect 1.5.1
authselect-libs 1.5.1
basesystem 11
bash 5.2.37
bees 0.10
boost-system 1.83.0
boost-thread 1.83.0
bootc 1.8.0
borgbackup 1.4.1
btrfs-progs 6.16.1
btrfsmaintenance 0.5.2
bubblewrap 0.10.0
busybox 1.37.0
bzip2-libs 1.0.8
ca-certificates 2025.2.80_v9.0.304
catatonit 0.2.1
checkpolicy 3.8
chrony 4.8
composefs 1.0.8
composefs-libs 1.0.8
conmon 2.1.13
container-selinux 2.242.0
containers-common 0.64.2
containers-common-extra 0.64.2
coreutils 9.6
coreutils-common 9.6
cpio 2.15
cracklib 2.9.11
crun 1.24
crypto-policies 20250707
cryptsetup-libs 2.8.1
curl 8.11.1
cyrus-sasl-lib 2.1.28
dbus 1.16.0
dbus-broker 36
dbus-common 1.16.0
dbus-libs 1.16.0
device-mapper 1.02.204
device-mapper-libs 1.02.204
diffutils 3.12
dosfstools 4.2
dracut 107
dracut-config-generic 107
e2fsprogs-libs 1.47.2
efi-filesystem 6
efibootmgr 18
efivar-libs 39
elfutils-libelf 0.193
expat 2.7.2
fedora-gpg-keys 42
fedora-iot-config 1
fedora-release-common 42
fedora-release-identity-iot 42
fedora-release-iot 42
fedora-repos 42
file 5.46
file-libs 5.46
filesystem 3.18
findutils 4.10.0
firewalld 2.3.1
firewalld-filesystem 2.3.1
fish 4.0.2
fuse 2.9.9
fuse-common 3.16.2
fuse-libs 2.9.9
fuse3 3.16.2
fuse3-libs 3.16.2
fwupd-efi 1.6
gawk 5.3.1
gdbm 1.23
gdbm-libs 1.23
gettext-envsubst 0.23.1
gettext-libs 0.23.1
gettext-runtime 0.23.1
git-core 2.51.0
glib2 2.84.4
glibc 2.41
glibc-common 2.41
glibc-langpack-en 2.41
glibc-minimal-langpack 2.41
gmp 6.3.0
gnupg2 2.4.7
gnutls 3.8.10
gobject-introspection 1.84.0
gpgme 1.24.3
gpm-libs 1.20.7
greenboot 0.15.8
greenboot-default-health-checks 0.15.8
grep 3.11
groff-base 1.23.0
grub2-common 2.12
grub2-efi-x64 2.12
grub2-tools 2.12
grub2-tools-minimal 2.12
gzip 1.13
htop 3.4.1
hwloc-libs 2.12.0
info 7.2
iproute 6.12.0
iptables-libs 1.8.11
iputils 20250605
jansson 2.14
jq 1.7.1
json-c 0.18
json-glib 1.10.6
kbd 2.7.1
kbd-legacy 2.7.1
kbd-misc 2.7.1
kernel 6.16.8
kernel-core 6.16.8
kernel-modules 6.16.8
kernel-modules-core 6.16.8
keyutils-libs 1.6.3
kmod 33
kmod-libs 33
krb5-libs 1.21.3
less 679
libacl 2.3.2
libarchive 3.8.1
libassuan 2.5.7
libattr 2.5.2
libb2 0.98.1
libblkid 2.40.4
libbpf 1.5.0
libbtrfs 6.16.1
libbtrfsutil 6.16.1
libcap 2.73
libcap-ng 0.8.5
libcbor 0.11.0
libcom_err 1.47.2
libcurl-minimal 8.11.1
libeconf 0.7.6
libedit 3.1
libevent 2.1.12
libfdisk 2.40.4
libffi 3.4.6
libfido2 1.15.0
libgcc 15.2.1
libgcrypt 1.11.0
libgomp 15.2.1
libgpg-error 1.51
libidn2 2.3.8
libkcapi 1.5.0
libkcapi-hasher 1.5.0
libkcapi-hmaccalc 1.5.0
libksba 1.6.7
libmicrohttpd 1.0.2
libmnl 1.0.5
libmodulemd 2.15.2
libmount 2.40.4
libnetfilter_conntrack 1.0.9
libnfnetlink 1.0.1
libnftnl 1.2.8
libnghttp2 1.64.0
libnsl2 2.0.1
libpipeline 1.5.8
libpkgconf 2.3.0
libpwquality 1.4.5
librepo 1.20.0
libseccomp 2.5.5
libselinux 3.8
libselinux-utils 3.8
libsemanage 3.8.1
libsepol 3.8
libsmartcols 2.40.4
libsodium 1.0.20
libsolv 0.7.34
libstdc++ 15.2.1
libtasn1 4.20.0
libtextstyle 0.23.1
libtirpc 1.3.7
libtool-ltdl 2.5.4
libunistring 1.1
liburing 2.9
libusb1 1.0.29
libutempter 1.2.1
libuuid 2.40.4
libverto 0.3.2
libxcrypt 4.4.38
libxml2 2.12.10
libxslt 1.1.43
libyaml 0.2.5
libzstd 1.5.7
lua-libs 5.4.8
lz4-libs 1.10.0
lzo 2.10
mailcap 2.1.54
man-db 2.13.0
microcode_ctl 2.1
mpdecimal 4.0.1
mpfr 4.2.2
ncurses 6.5
ncurses-base 6.5
ncurses-libs 6.5
ncurses-term 6.5
netavark 1.16.1
nettle 3.10.1
nftables 1.1.1
node-exporter 1.9.1
npth 1.8
nss-altfiles 2.23.0
numactl-libs 2.0.19
oniguruma 6.9.10
openldap 2.6.10
openssh 9.9p1
openssh-clients 9.9p1
openssh-server 9.9p1
openssl-libs 3.2.4
os-prober 1.81
ostree 2025.6
ostree-libs 2025.6
p11-kit 0.25.8
p11-kit-trust 0.25.8
pam 1.7.0
pam-libs 1.7.0
passt 0^20250919.g623dbf6
passt-selinux 0^20250919.g623dbf6
pcre2 10.45
pcre2-syntax 10.45
pcre2-utf32 10.45
pkgconf 2.3.0
pkgconf-m4 2.3.0
pkgconf-pkg-config 2.3.0
podman 5.6.1
policycoreutils 3.8
polkit-libs 126
popt 1.19
procps-ng 4.0.4
prometheus-podman-exporter 1.18.1
psmisc 23.7
qemu-guest-agent 9.2.4
readline 8.2
ripgrep 14.1.1
rpm 4.20.1
rpm-libs 4.20.1
rpm-ostree 2025.10
rpm-ostree-libs 2025.10
rpm-plugin-selinux 4.20.1
rpm-sequoia 1.7.0
sed 4.9
selinux-policy 42.9
selinux-policy-targeted 42.9
setools-console 4.5.1
setup 2.15.0
shadow-utils 4.17.4
shadow-utils-subid 4.17.4
skopeo 1.20.0
snapper 0.11.0
snapper-libs 0.11.0
sqlite-libs 3.47.2
sudo 1.9.17
systemd 257.9
systemd-container 257.9
systemd-journal-remote 257.9
systemd-libs 257.9
systemd-networkd 257.9
systemd-pam 257.9
systemd-resolved 257.9
systemd-shared 257.9
systemd-sysusers 257.9
systemd-udev 257.9
tar 1.35
tmux 3.5a
tpm2-tss 4.1.3
traceroute 2.1.6
tzdata 2025b
udica 0.2.8
util-linux 2.40.4
util-linux-core 2.40.4
vim-common 9.1.1775
vim-data 9.1.1775
vim-enhanced 9.1.1775
vim-filesystem 9.1.1775
which 2.23
xxd 9.1.1775
xxhash-libs 0.8.3
xz 5.8.1
xz-libs 5.8.1
yajl 2.1.0
zchunk-libs 1.5.1
zlib-ng-compat 2.2.5
zram-generator 1.2.1
zram-generator-defaults 1.2.1
$ mount
composefs on / type overlay (ro,relatime,seclabel,lowerdir+=/run/ostree/.private/cfsroot-lower,datadir+=/sysroot/ostree/repo/objects,redirect_dir=on,metacopy=on)
/dev/vda4 on /etc type btrfs (rw,relatime,seclabel,discard=async,space_cache=v2,subvolid=5,subvol=/)
/dev/vda4 on /sysroot type btrfs (ro,relatime,seclabel,discard=async,space_cache=v2,subvolid=5,subvol=/)
/dev/vda4 on /sysroot/ostree/deploy/fedora-iot/var type btrfs (rw,relatime,seclabel,discard=async,space_cache=v2,subvolid=5,subvol=/)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=4031740k,nr_inodes=1007935,mode=755,inode64)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel,inode64)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,seclabel,nsdelegate,memory_recursiveprot)
none on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime,seclabel)
efivarfs on /sys/firmware/efi/efivars type efivarfs (rw,nosuid,nodev,noexec,relatime)
bpf on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700)
configfs on /sys/kernel/config type configfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,size=1622432k,nr_inodes=819200,mode=755,inode64)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,nosuid,noexec,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=85,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=4614)
mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime,seclabel)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,nosuid,nodev,relatime,seclabel,pagesize=2M)
debugfs on /sys/kernel/debug type debugfs (rw,nosuid,nodev,noexec,relatime,seclabel)
tracefs on /sys/kernel/tracing type tracefs (rw,nosuid,nodev,noexec,relatime,seclabel)
tmpfs on /run/credentials/systemd-journald.service type tmpfs (ro,nosuid,nodev,noexec,relatime,nosymfollow,seclabel,size=1024k,nr_inodes=1024,mode=700,inode64,noswap)
fusectl on /sys/fs/fuse/connections type fusectl (rw,nosuid,nodev,noexec,relatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,seclabel,nr_inodes=1048576,inode64)
/dev/vda4 on /var type btrfs (rw,relatime,seclabel,discard=async,space_cache=v2,subvolid=5,subvol=/)
/dev/vda4 on /var/home type btrfs (rw,noatime,seclabel,discard=async,space_cache=v2,subvolid=256,subvol=/00)
/dev/vda2 on /boot type ext4 (rw,relatime,seclabel)
/dev/vda4 on /var/home/.snapshots type btrfs (rw,noatime,seclabel,discard=async,space_cache=v2,subvolid=257,subvol=/00/.snapshots)
/dev/vda1 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=winnt,errors=remount-ro)
tmpfs on /run/credentials/systemd-resolved.service type tmpfs (ro,nosuid,nodev,noexec,relatime,nosymfollow,seclabel,size=1024k,nr_inodes=1024,mode=700,inode64,noswap)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=811216k,nr_inodes=202804,mode=700,uid=1000,gid=1000,inode64)
tmpfs on /run/user/1001 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=811216k,nr_inodes=202804,mode=700,uid=1001,gid=1001,inode64)
tmpfs on /run/user/1002 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=811216k,nr_inodes=202804,mode=700,uid=1002,gid=1002,inode64)
tmpfs on /run/user/1006 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=811216k,nr_inodes=202804,mode=700,uid=1006,gid=1006,inode64)
tmpfs on /run/user/1003 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=811216k,nr_inodes=202804,mode=700,uid=1003,gid=1003,inode64)
tmpfs on /run/credentials/systemd-networkd.service type tmpfs (ro,nosuid,nodev,noexec,relatime,nosymfollow,seclabel,size=1024k,nr_inodes=1024,mode=700,inode64,noswap)
tmpfs on /run/credentials/getty@tty1.service type tmpfs (ro,nosuid,nodev,noexec,relatime,nosymfollow,seclabel,size=1024k,nr_inodes=1024,mode=700,inode64,noswap)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,nosuid,nodev,noexec,relatime)
tmpfs on /run/user/1004 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=811216k,nr_inodes=202804,mode=700,uid=1004,gid=1004,inode64)
System journal while running the above commands
Sep 26 00:42:26 kernel: BTRFS info (device vda4): scrub: started on devid 1
Sep 26 00:42:48 kernel: BTRFS info (device vda4): scrub: finished on devid 1 with status: 0
Sep 26 00:43:21 kernel: fs-verity (vda4, inode 10909667): FILE CORRUPTED! pos=0, level=0, want_hash=sha256:dc33e0d22f2755a8e3081dea3393ea59aeb2bc5640e59b85a5220fa8b3abdd86, real_hash=sha256:ad7facb2586fc6e966c004d7d1d16b024f5805ff7cb47c7a85dabd8b48892ca7
Sep 26 00:43:21 kernel: fs-verity (vda4, inode 10909667): FILE CORRUPTED! pos=0, level=0, want_hash=sha256:dc33e0d22f2755a8e3081dea3393ea59aeb2bc5640e59b85a5220fa8b3abdd86, real_hash=sha256:ad7facb2586fc6e966c004d7d1d16b024f5805ff7cb47c7a85dabd8b48892ca7
Sep 26 00:43:21 kernel: fs-verity (vda4, inode 10909667): FILE CORRUPTED! pos=0, level=0, want_hash=sha256:dc33e0d22f2755a8e3081dea3393ea59aeb2bc5640e59b85a5220fa8b3abdd86, real_hash=sha256:ad7facb2586fc6e966c004d7d1d16b024f5805ff7cb47c7a85dabd8b48892ca7
Sep 26 00:43:21 kernel: fs-verity (vda4, inode 10909667): FILE CORRUPTED! pos=0, level=0, want_hash=sha256:dc33e0d22f2755a8e3081dea3393ea59aeb2bc5640e59b85a5220fa8b3abdd86, real_hash=sha256:ad7facb2586fc6e966c004d7d1d16b024f5805ff7cb47c7a85dabd8b48892ca7
Sep 26 00:43:21 systemd-coredump[5752]: Process 5751 (ostree) of user 0 terminated abnormally with signal 7/BUS, processing...
Sep 26 00:43:21 systemd[1]: Started systemd-coredump@1-5752-0.service - Process Core Dump (PID 5752/UID 0).
Sep 26 00:43:21 systemd-coredump[5753]: Resource limits disable core dumping for process 5751 (ostree).
Sep 26 00:43:21 systemd-coredump[5753]: Process 5751 (ostree) of user 0 terminated abnormally without generating a coredump.
Sep 26 00:43:21 systemd[1]: systemd-coredump@1-5752-0.service: Deactivated successfully.
Sep 26 00:43:54 kernel: fs-verity (vda4, inode 10909667): FILE CORRUPTED! pos=0, level=0, want_hash=sha256:dc33e0d22f2755a8e3081dea3393ea59aeb2bc5640e59b85a5220fa8b3abdd86, real_hash=sha256:ad7facb2586fc6e966c004d7d1d16b024f5805ff7cb47c7a85dabd8b48892ca7
All system logs in the past 90 days containing fs-verity with severity ≥error
Resolved paths of the above inodes
$ echo -n 10397939 10909667 10935659 10985929 9242655 | xargs --delimiter=' ' --replace='@' sudo btrfs inspect-internal inode-resolve @ /sysroot/
/sysroot//ostree/repo/objects/2d/d2a33a0a43236f1b1e2307fd52f08a89578145d67b96c38bd4ad8d75000e5a.file
/sysroot//ostree/deploy/fedora-iot/deploy/8faf3409a66b94d560eb20b6184b08a482d2b65138e4b6a359bd6f53e7536160.0/usr/lib64/libresolv.so.2
/sysroot//ostree/deploy/fedora-iot/deploy/cd5e58f02e387ea4faaaa09542b453602fbec43f4b8a35876a0463608d8e7eac.0/usr/lib64/libresolv.so.2
/sysroot//ostree/repo/objects/78/61de45bf7811062f6cf341c7999a7733d8cc7564abdc03bfc14cab434cd290.dirtree
/sysroot//ostree/repo/objects/88/425fd763f63cb030370dc0a39420ca1ee0121fc0dc592a61315b337d1f278b.dirtree
/sysroot//ostree/deploy/fedora-iot/deploy/cd5e58f02e387ea4faaaa09542b453602fbec43f4b8a35876a0463608d8e7eac.0/.ostree.cfs
/sysroot//ostree/repo/objects/42/873224adf940e85ee19e09a04afab671435bf238e805283253f0ed99579524.file
/sysroot//ostree/deploy/fedora-iot/deploy/8faf3409a66b94d560eb20b6184b08a482d2b65138e4b6a359bd6f53e7536160.0/usr/lib64/libssl.so.3.2.4
/sysroot//ostree/deploy/fedora-iot/deploy/cd5e58f02e387ea4faaaa09542b453602fbec43f4b8a35876a0463608d8e7eac.0/usr/lib64/libssl.so.3.2.4
The fs-verity errors caused new services to stop launching and prevented me from logging in, so I definitely need to fix this somehow. However, I have zero idea what to do here. Any suggestions? I have no problem building packages from source if you want me to test something out.