Package: f2fs-tools Version: 1.14.0-2 Severity: important When running an fsck.f2fs on a readonly-mounted filesystem (root filesystem for example, which obviously can not be unmounted), fsck.f2fs always fails:
# fsck.f2fs /dev/sda2 Info: Mounted device! Info: Check FS only on RO mounted device Error: Failed to open the device! # echo $? 8 # _ The problem is that open() fails with EBUSY: # strace fsck.f2fs /dev/sda2 ... write(1, "Info: Mounted device!\n", 22Info: Mounted device! ) = 22 write(1, "Info: Check FS only on RO mounte"..., 41Info: Check FS only on RO mounted device ) = 41 stat("/dev/mmcblk1p2", {st_mode=S_IFBLK|0660, st_rdev=makedev(0xb3, 0x2), ...}) = 0 openat(AT_FDCWD, "/dev/sda2", O_RDWR|O_EXCL) = -1 EBUSY (Device or resource busy) openat(AT_FDCWD, "/dev/sda2", O_RDONLY|O_EXCL) = -1 EBUSY (Device or resource busy) write(1, "\tError: Failed to open the devic"..., 35 Error: Failed to open the device! ) = 35 exit_group(8) = ? I don't know if this is a kernel issue (who explicitly prevents opening of a mounted block device) or f2fs-tools issue (who is not doing any special actions required to work around that), but the result is that the root filesystem is never checked for errors, and the boot process always complains about failed fsck. Other filesystems (eg ext*fs) is able to check and repair a mounted (read-only) filesystem just fine. This is why I think this bug is of Severity: important. The only way to check f2fs root filesystem for errors is to put fsck.f2fs into initramfs and go from there, or boot some rescue media. Thanks, /mjt -- System Information: Debian Release: 11.5 APT prefers stable-security APT policy: (990, 'stable-security'), (990, 'stable'), (500, 'stable-debug'), (500, 'oldstable'), (99, 'testing'), (50, 'unstable') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 6.0.0-4-amd64 (SMP w/16 CPU threads; PREEMPT) Locale: LANG=ru_RU.utf8, LC_CTYPE=ru_RU.utf8 (charmap=UTF-8), LANGUAGE not set Shell: /bin/sh linked to /usr/bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled