fstrim: /: FITRIM ioctl 失败: 结构需要清理

fstrim: /: FITRIM ioctl 失败: 结构需要清理

在我的 Debian sid 上,在我的新(< 1 个月)SSD nvme WD SN850 上安装了自定义 5.17.0-rc1 内核,我的根分区格式化为 f2fs(v 1.14)

我明白了fstrim: /: FITRIM ioctl failed: Structure needs cleaning

fsck 正常,没有发现问题,操作系统运行没有问题

sudo fsck.f2fs /dev/nvme0n1p2
Info: Segments per section = 1
Info: Sections per zone = 1
Info: sector size = 512
Info: total sectors = 976566287 (476839 MB)
Info: MKFS version
  "Linux version 5.5.0-rc6 (u1@jeanordi) (gcc version 9.2.1 20191130 (Debian 9.2.1-21)) #1 SMP PREEMPT Thu Jan 16 00:24:17 CET 2020"
Info: FSCK version
  from "Linux version 5.5.0-rc6 (u1@jeanordi) (gcc version 9.2.1 20191130 (Debian 9.2.1-21)) #1 SMP PREEMPT Thu Jan 16 00:24:17 CET 2020"
    to "Linux version 5.5.0-rc6 (u1@jeanordi) (gcc version 9.2.1 20191130 (Debian 9.2.1-21)) #1 SMP PREEMPT Thu Jan 16 00:24:17 CET 2020"
Info: superblock features = 0 : 
Info: superblock encrypt level = 0, salt = 00000000000000000000000000000000
Info: total FS sectors = 976566280 (476839 MB)
Info: CKPT version = 1d9fb4bd
Info: checkpoint state = 55 :  crc fsck compacted_summary unmount

[FSCK] Unreachable nat entries                        [Ok..] [0x0]
[FSCK] SIT valid block bitmap checking                [Ok..]
[FSCK] Hard link checking for regular file            [Ok..] [0xb]
[FSCK] valid_block_count matching with CP             [Ok..] [0x44993b]
[FSCK] valid_node_count matching with CP (de lookup)  [Ok..] [0x16c2c]
[FSCK] valid_node_count matching with CP (nat lookup) [Ok..] [0x16c2c]
[FSCK] valid_inode_count matched with CP              [Ok..] [0x15d7c]
[FSCK] free segment_count matched with CP             [Ok..] [0x374d7]
[FSCK] next block offset is free                      [Ok..]
[FSCK] fixing SIT types
[FSCK] other corrupted bugs                           [Ok..]

Done: 2.975766 secs

答案1

ArchWiki 说道f2fs

默认情况下,F2FS 使用混合 TRIM 模式安装,其行为类似于连续 TRIM。此实现创建异步丢弃线程以减轻 RW IO 之间较长的丢弃延迟。它将候选者保留在内存中,线程在空闲时间发出它们[8]。因此,想要定期 TRIM 的用户将需要隐式设置nodiscard安装选项,或者如果手动安装则将/etc/fstab其传递给。mount

换句话说,除非您nodiscard为根文件系统指定了挂载选项(大概是在 initramfs 中),否则您将无法运行fstrim-f2fs并且不需要,因为f2fs只要系统不运行,它就会自动在后台运行有更重要的事情要做。

如果您希望能够使用fstrimon f2fs,则需要使用nodiscardmount 选项来停止连续的后台 TRIM 操作并允许您手动执行此操作fstrim

FITRIM ioctl failed: Structure needs cleaning结果确实很奇怪。fstrim这似乎是产生错误的源中的位置。

该错误Structure needs cleaning意味着该errno值为EUCLEAN。根据Elixir 交叉引用器,它出现在f2fs驱动程序中只在一处

#define EFSCORRUPTED    EUCLEAN     /* Filesystem is corrupted */

呃哦...貌似f2fs定义EUCLEAN为同义词EFSCORRUPTED,可以查到在 f2fs 驱动程序内的许多位置,无论是什么原因造成的,都可能是坏消息。

您的f2fs文件系统可能已损坏。

相关内容