最近在开发一个 Linux 设备时,它在 Windows 上显示为 USB 驱动器,每个挂载文件系统都使用 mkfs.fat 创建,但是当挂载(通过 g_mass_storage)并显示在 Windows 上时,它总是显示消息“某些文件可能有问题此设备或光盘上的文件。如果您在所有文件写入之前移除设备或光盘,就会发生这种情况。”
让 windows 修复它后,Windows 报告没有发现任何错误。
是什么导致 Windows 报告“此驱动器有问题”?
最近在开发一个 Linux 设备时,它在 Windows 上显示为 USB 驱动器,每个挂载文件系统都使用 mkfs.fat 创建,但是当挂载(通过 g_mass_storage)并显示在 Windows 上时,它总是显示消息“某些文件可能有问题此设备或光盘上的文件。如果您在所有文件写入之前移除设备或光盘,就会发生这种情况。”
让 windows 修复它后,Windows 报告没有发现任何错误。
是什么导致 Windows 报告“此驱动器有问题”?
FAT32 和 vFat 文件系统有一个“脏”标志,应该设置它来指示写入正在进行,以发出文件系统可能已部分写入(因此需要检查)的信号。
Linux 在以读写方式挂载时在驱动器上设置“脏”标志,并且在卸载之前不取消设置。这意味着如果驱动器在没有先卸载的情况下被移除,那么脏标志仍然会被设置,即使没有挂起或已经进行的更改。
它应该做的是在文件或目录首次打开写入时设置它,然后在所有此类文件关闭并且挂起的写入完成时取消设置。