如何在 rust-fuse 中找到路径?

How can I find the path in rust-fuse?

我正在尝试用 Rust 为 REST API 编写一个 FUSE 接口。我正在使用 rust-fuse 库。我在实现 Filesystem trait 时需要 readdir 回调函数中的 dir 路径,但该函数只需要一个 inode!

如何找到文件的路径?它是否以某种方式嵌入 Request?

我可以创建一个 inode <-> path 地图,但这让事情变得太复杂了。 Python 和 Haskell FUSE 库都将路径作为参数而不是 inode 传递给回调函数。

fn readdir(&mut self,
           req: &Request,
           ino: u64,
           _fh: u64,
           offset: u64,
           mut reply: ReplyDirectory) {
    // ...
}

图书馆似乎还没有提供:

From the README(强调我的):

To Do

There's still a lot of stuff to be done. Feel free to contribute.

  • Interrupting a filesystem operation isn't handled yet. An additional more high level API would be nice. It should provide pathnames instead inode numbers and automatically handle concurrency and interruption (like the FUSE C library's high level API).

您似乎需要在打开/列出 directory/file 时分配一个唯一的 inode,跟踪 inode 到路径的映射,并在以后使用它。

根据您的 API 结构,您还可以将一些信息直接编码到 inode 中。例如,也许您有 < 32 个端点,因此您可以将每个端点编码为 5 位数字,然后再对其进行解码。然后只有一部分 inode 需要具有任意值。