我正在尝试开发一个FUSE3基于inode的虚拟文件系统(VFS),其中:
<inode>:<filename>
ext2fs_read_inode(fs, <inode>, &<inode>)
[1]:具体来说,使用 NoSQL 数据库 (kyotocabinet)。但这可以是任何具有键值性质的东西
在我尝试通过fuse_lowlevel.h
或
fuse.h
创建这样一个系统时,我无法弄清楚如何在
readdir
中缓存\预设\预填充索引节点,因为我偶然发现了一个很多压倒性的不确定性\问题(主要是[由于我的知识和]文档的运气)例如:
readdir_ino
:readdir_ino
:
如果未给出 use_ino 选项,仍然尝试填写 readdir(2) 中的 d_ino 字段。如果该名称之前已查找过,并且仍在缓存中,则将使用在那里找到的索引节点号。否则将被设置为-1。如果给出了 use_ino 选项,则忽略此选项。
我没有看到(dentry)-
d_ino
被设置为illed作为示例任何地方,所以我认为他们的意思是(stat)-st_ino
,这可能是一个错字?
...如果给出了 use_ino 选项,则忽略此选项。
(假设这意味着
readdir_ino
被忽略[基于开头“如果use_ino...”中所说的])那么我不明白为什么在下面提供的示例中设置use_ino=1
做了相反的事情(通过 ls
不显示 inode),基于有关 use_ino
的文档指出:
...该值用于填写st_ino字段...
filler
:尽管
filler
中的 readdir
提供了 struct stat
条目和文档说明了有关 cfg->readdir_ino
的所有这些内容,但 st_ino
似乎被忽略了即使使用了 remember=-1
。
等等...
所以,我的问题是:有没有什么方法可以预先填写