【问题标题】:Wince 6.0 file system corruption - directories appear to be recursingWince 6.0 文件系统损坏 - 目录似乎是递归的
【发布时间】:2011-09-28 06:19:27
【问题描述】:

我们有一个成熟的 Wince 6.0 R2 定制设备,能够通过 WiFi 下载文件并将它们存储在 NAND 闪存 FAT 文件系统分区中。这已经在全球超过 15000 台设备上运行了一年多,但最近在一些新软件和操作系统版本的测试系统上,我们已经看到一些文件系统损坏,其中特定目录似乎具有返回到的递归链接顶层 \Flash 内容。特别是,我们有一个 \Flash\Manifest 目录,其中包含一个名为 GCMaps 的子目录。通常这包含许多地图图像,但是当损坏发生时,它还包括明显递归循环中的所有高级 \Flash 文件和子目录,例如\Flash\Manifest\GCMaps\program.exe 和 \Flash\Manifest\GCMaps\Manifest\GCMaps\Manifest...

问题始终是同一个目录,并且在我们测试机架上的多个设备上发生,尽管我们的许多测试设备完全不受影响。我可以通过重新格式化文件系统分区或擦除整个闪存设备、重新分区、重新刷新操作系统和重新创建文件系统来临时修复受影响的设备。但受影响的设备会在几天内继续损坏。

最近的测试表明,多次更改 Manifest 文件后文件系统保持不变,但随后我们在午夜自动重启,并且在启动时,一些受影响的设备出现了问题。

奇怪的是,我们最近没有更改任何清单下载或集成逻辑,也没有任何与 GCMaps 有任何关系的东西。我最近所做的一项重大更改是删除 Windows Shell 并以“Kiosk 模式”运行我们的设备,而我们的应用程序是唯一的 UI。

以前有没有人在 CE 上遇到过这种递归目录损坏,如果有,您找到解决方案了吗?是否有任何理由卸下外壳可能会导致这种情况?任何建议或信息将不胜感激!

谢谢, 里奇·琼斯

【问题讨论】:

  • 我怀疑这是刷新问题,因为我没有丢失文件并且文件本身也没有损坏。相反,我得到了一个总是出现在一个特定子目录下的目录结构的循环引用。 FAT 是否有可能在读取过程中损坏???这就是发生损坏时我们对该特定目录中的文件所做的全部操作。
  • 如果您想为您的问题添加一些内容,请编辑它而不是发表评论。

标签: filesystems windows-ce fat


【解决方案1】:

如果您在重新启动之前不刷新文件系统缓冲区(或者如果您强行关闭设备),FAT 很容易损坏。这适用于使用 FAT 的 PC 和其他设备。因此,可能是重新启动导致了问题。删除 shell 可以是相关的或不相关的 - shell 可能会定期执行一些刷新,这使您从之前的问题中解脱出来。

【讨论】:

  • 感谢您的意见!我忽略了最后一次写入和重新启动之间的时间是很多小时,所以我不认为文件系统缓冲区仍然没有刷新,除非你之前指出的 shell 负责。我肯定会添加强制刷新,尽管我也看到了在 HKEY_LOCAL_MACHINE\System\StorageManager\FATFS 中将“EnableCache”设置为“0”以完全禁止缓存的建议。有谁知道这是否是个好主意?
  • @rjones54 关于禁用缓存 - 您需要测量性能,因为答案取决于您的使用场景。
猜你喜欢
  • 2022-01-26
  • 2014-09-23
  • 2021-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-23
  • 2020-03-18
  • 2011-10-23
相关资源
最近更新 更多