我正在尝试为Rust中的REST API编写FUSE接口。我正在使用rust-fuse库。在实现readdir
特征时,我需要Filesystem
回调函数中的dir路径,但该函数只接受inode!
如何找到文件的路径?它是否以某种方式嵌入Request
?
我可以创建一个inode <-> path
地图,但这会让事情变得太复杂。 Python和Haskell FUSE库都将路径作为参数传递给回调函数而不是inode。
fn readdir(&mut self,
req: &Request,
ino: u64,
_fh: u64,
offset: u64,
mut reply: ReplyDirectory) {
// ...
}
答案 0 :(得分:2)
图书馆似乎还没有提供:
From the README(强调我的):
待办事项
还有很多事要做。随意贡献。
- 尚未处理中断文件系统操作。额外的 更高级别的API会很好。 它应该提供路径名 inode编号并自动处理并发和中断 (比如FUSE C库的高级API)。
当您打开/列出目录/文件时,您需要分配一个唯一的inode,跟踪inode到路径的映射,并在以后使用它。
根据您的API结构,您还可以直接将一些信息编码到inode中。例如,也许你有&lt; 32个端点,因此您可以将每个端点编码为5位数,并在以后对其进行解码。然后,只有一小部分inode需要具有任意值。