对于上下文,我使用的是内核 6.1,因此使用 5.7 后的树内 exFAT 内核驱动程序。
目前,如果我插入 exFAT 格式的闪存驱动器并对其进行写入,它将写入 RAM 缓存并缓慢刷新到闪存。这不太好,因为对于用户空间应用程序(以及用户)来说,写入似乎已经完成,直到您尝试卸载驱动器(或更准确地说,分区)并且umount
(或udisksctl
)挂起。更糟糕的是,如果用户没有意识到这种行为,并且有拔掉插头之前不卸载的坏习惯,那么只会导致无声的数据损坏。
所以我非常想禁用这种缓存行为。从阅读来看man mount
,令人惊讶的是根本没有提到 exFAT。在“FAT 的安装选项”部分下,有一个flush
选项。但如果我理解正确的话,本节不适用于 exFAT,因为 exFAT 由exfat
驱动程序处理,这与vfat
处理 FAT16 和 FAT32 等驱动程序不同。
事实上,如果我尝试使用该flush
选项挂载我的 exFAT 分区,它只会出错:
# sda1 is my exFAT partition
$ udisksctl mount -b /dev/sda1 -o flush
Error mounting /dev/sda1: GDBus.Error:org.freedesktop.UDisks2.Error.OptionNotPermitted: Mount option `flush' is not allowed
exfat
那么当前驱动程序是否根本不支持禁用写入缓存?如果没有,有什么解决方法吗?