![什么原因导致 Windows 报告此驱动器有问题](https://linux22.com/image/1587878/%E4%BB%80%E4%B9%88%E5%8E%9F%E5%9B%A0%E5%AF%BC%E8%87%B4%20Windows%20%E6%8A%A5%E5%91%8A%E6%AD%A4%E9%A9%B1%E5%8A%A8%E5%99%A8%E6%9C%89%E9%97%AE%E9%A2%98.png)
最近,在开发一个 Linux 设备时,该设备将自己作为 USB 驱动器呈现给 Windows,并且每次挂载时都会使用 mkfs.fat 创建文件系统,但是当挂载(通过 g_mass_storage)并呈现给 Windows 时,它总是显示消息“此设备或光盘上的某些文件可能有问题。如果在将所有文件写入设备或光盘之前将其移除,就会发生这种情况。”
让 Windows 修复之后,Windows 报告没有发现错误。
什么原因导致 Windows 报告“此驱动器有问题”?
答案1
FAT32 和 vFat 文件系统具有“Dirty”标志,该标志应该设置为指示写入正在进行中,以便表示文件系统可能被部分写入(因此需要检查)。
当驱动器以读写方式安装时,Linux 会在该驱动器上设置“脏”标志,并且直到卸载后才会取消设置。这意味着如果驱动器在未先卸载的情况下被移除,则脏标志仍会设置,即使没有待处理或已进行任何更改。
它应该做的是,在第一次打开文件或目录进行写入时设置它,然后在关闭所有这些文件并且待处理的写入完成时取消设置它。