是否有任何方法可以在非阅读文件系统中安全使用非零超时?我似乎找不到一个。几个反例:
示例一个(非零负输入超时):
- 应用程序调用stat()并获取inoent;
- 呼叫create();
- 呼叫stat(),期望成功,但由于否定的进入超时而变得令人难以置信,因此结论是FS损坏/不一致/等。 。
示例两个(非零atter超时):
- 应用程序调用UTIMES();
- 呼叫stat(),但获得过时的值并得出结论FS被打破/不一致/等。
我无法提出一个正面输入超时的反例 - 即使Lookup()返回一些过时的Inode,Filesystem仍然可以返回以后的GetAttr()调用()调用。
但是上述两个示例呢?
仅供参考,同样的问题已发布在保险丝邮件列表中。
这是凯尔·利平科特(Kyle Lippincott)的答案,说明非零超时工作:
如果create()通过内核,它会使负面无效 输入超时。如果创建在外部发生,则超时 仍然持有。
在非零超时问题时引用Goswin von Brederlow:
缓存仅在实现基于磁盘的文件系统时才能正常工作, 一个只有保险丝过程才能改变元数据,并且所有访问权限 仅通过保险丝。任何可以更改的覆盖文件系统 基础文件系统无需通过FUSE就可以遇到 不一致。
所以,如果您是构建一个允许多个主机更改您可能会出现非零超时问题的数据的网络文件系统。