【问题标题】:How can I find the path in rust-fuse?如何在 rust-fuse 中找到路径?
【发布时间】:2017-01-30 09:11:03
【问题描述】:

我正在尝试为 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) {
    // ...
}

【问题讨论】:

    标签: rust fuse


    【解决方案1】:

    图书馆似乎还没有提供这个:

    From the README(强调我的):

    待办事项

    还有很多事情要做。随意贡献。

    • 尚未处理中断文件系统操作。额外的 更高级的 API 会很好。 它应该提供路径名 inode 编号 并自动处理并发和中断 (如 FUSE C 库的高级 API)。

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

    根据您的 API 结构,您还可以将一些信息直接编码到 inode 中。例如,也许您有

    【讨论】:

    • 是的,这是可行的,但它使逻辑变得不必要地复杂。添加路径应该是直截了当的,因为其他一些功能也是如此,例如lookup。在github.com/zargony/rust-fuse/blob/…中查找let name = data.fetch_path();
    • 我刚刚克隆了 repo 并添加了readdir 函数的路径,它工作正常!我很快就会做 PR。
    • @Hapal 嘿,这是作弊! ^_^ 不过,这对我来说确实是个不错的答案。
    猜你喜欢
    • 2017-08-12
    • 2017-04-11
    • 1970-01-01
    • 2014-01-31
    • 2022-09-29
    • 2012-03-07
    • 2016-07-29
    • 2016-05-09
    相关资源
    最近更新 更多