如何在 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 需要具有任意值。
我正在尝试用 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 需要具有任意值。