虚拟文件的文件大小

我正在使用FUSE创建一个覆盖文件系统,其中目录使用虚拟实体进行扩充。 我将这些实体的文件大小设置为0,因为我无法知道 – 在阅读它们之前,这在我的情况下特别昂贵 – 应该是什么。

但是,似乎有一个明显的优化发生,因为零长度文件不会产生任何read调用(仅openrelease )。

因此,我的问题很简单,我应该将文件大小设置为什么? 我知道符号链接的文件名大小; 如果它不是符号链接,这会工作吗? 否则,我能做的最好的事情就是为大小提供一个下限…如果read有一个文件描述符,块大小和偏移量,可能它会读取’直到EOF而不是任何stat可以告诉它。

文件大小必须正确。 很多代码都依赖于这些信息,你不能简单地省略它。

这意味着您需要找出一种有效的方法来缓存/预先计算此信息。

查看cmdfs的源代码,它们对文件系统中的所有文件运行命令。 Linux Magazine有一篇概述文章 。