1

我正在尝试为 readdir() 中的每条记录填充一个 stat 结构,并通过 fill() 将相应的 stat 传递给 getattr。 我在某处读到FUSE 在 readdir 填充时仅识别 stat 结构的某些字段(切题:总是这样吗?)。显然,这些接受的字段之一是 st_ino。但是,当我在 readdir() 处为给定记录填充统计结构的 st_ino 时,我在 getattr() 处看不到该记录的相应更改。

也许值得注意的是,我试图用上述问题解决的问题是我想按记录将(非 POSIX)信息从 readdir 传递给 getattr。最初,我的 hack 是将一个唯一标识符附加到作为主键的每个记录名称到包含此(非 POSIX)信息的数据库中。该解决方案的问题是用户在发出“ls”时会看到时髦的命名方案。如果我可以将此主键存储在 st_ino 字段中,那么我可以唯一标识记录,而无需用户看到命名方案。所以我想这个问题的另一个解决方案是找到一种方法来改变 readdir 填充记录缓冲区的名称,以及 ls 打印到屏幕上的名称。但是,我不确定在不修改 FUSE 源的情况下是否可行。

任何帮助表示赞赏!

4

1 回答 1

1

我很久以前写了一些 FUSE 文件系统,这对我来说有点模糊。但是当我查看我的旧代码时,我发现 FUSE 允许一个 private_data 字段。您可以根据需要管理 private_data 中的信息。这应该提供一种将信息从 readdir 传输到 getattr 的机制,而不会污染文件名空间或为特定用途保留的任何其他数据成员。

于 2013-03-13T06:42:24.237 回答