我已经实现了一个基于OSXFUSE的文件系统。它在10.8上运行良好,但在Mavericks上,MS Word会将现有文档打开为空白(尽管我显然返回了正确的数据-我在预览图标中看到了内容。此外,如果我将文件复制到真正的硬盘并打开它,它会打开良好)。
如果我用"local"标志挂载文件系统,那么这个问题在Mavericks上就得到了修复。然而,使用这个标志会带来其他问题——例如,它看起来会导致Finder进行一些更激进的缓存,因此一些文件在Finder中不可见(尽管我可以在终端中读取它们)。
理想情况下,我希望能够在没有这个本地标志的情况下挂载文件系统(我的实现将文件存储在网络上,所以传递这个标志看起来是错误的),但空白Word文档的问题真的让我很困惑
我们已经能够找到问题,等待它-谷歌Chrome。当Google Chrome在安装卷的同时运行时,问题就会出现。如果Google Chrome没有运行,请使用Word/Excel/等。文件打开得很好。
我们已经与Benjamin(OSXFUSE开发人员)取得了联系。也请在OSXFUSE邮件列表上查看他对这个问题的回答:
https://groups.google.com/d/msg/osxfuse-group/URlw-n-Qakg/bLw2fHHDe7sJ
到目前为止,我还没有在osxfuse中发现任何可能解释这种行为的错误。奇怪的是,这些文件没有损坏或为空。将文件复制到另一个卷后,它们打开得很好。使用LibreOffice打开FUSE卷上的文件也可以。
Chrome和Office似乎是基于Carbon框架(自Mountain Lion以来,该框架已被弃用)。我相信这个问题在某种程度上与碳有关,因为非碳应用程序似乎没有受到影响。每次装载卷时,Chrome都会查询卷的功能和属性(甚至更多)。据我所知,所有这些文件系统操作都返回成功,没有任何错误。但从此以后,Office将无法打开文档。
在我看来,最有可能的两个原因是:
- osxfuse可能会破坏小牛队的VFS文件系统合同。我已经对此进行了一段时间的调查,但我没有发现任何支持这一点的线索
- Carbon/CarbonCore框架中可能存在漏洞。奇怪的是,当使用库存网络文件系统afp或smb时没有问题
这个问题的两个可能的"修复方案"(或者更确切地说是"解决方案")似乎是(目前):
- 使用"本地"装载选项(这可能会带来其他问题,通常不建议使用)
- 不要使用"卷名"装载选项。这个问题似乎只有在使用"卷名"装载选项时才会出现。如果未设置自定义卷名,则问题似乎不会发生,并且Excel/Word/等。文件打开得很好——不管挂载时谷歌Chrome是否在运行
我看到了同样的情况,同样,local也不是一个选项。Photoshop也存在类似问题。
我实现的一些发现
- 重新启动后第一次运行时不会出现问题
- 程序退出后,问题开始出现
- 在退出程序之前,我通过手动卸载(并等待几秒钟)解决了这个问题。如果卸载成功,则在下次运行时,再次装载会执行良好
- 如果程序终止或卸载失败(使用中的文件等),则在下次装载时,该卷的读取访问将在Word/Phoshop中中止
- 重新启动可解决问题
这与您看到的相符吗?