什么是inode生成编号?

12

我正在计划使用低级API实现一个FUSE文件系统,并试图理解 fuse_entry_param 结构。

我想知道 unsigned long fuse_entry_param::generation 实际上是什么意思。 文档 只是说,ino/generation 对应应该在文件系统的生命周期内是唯一的,但没有详细说明。

inode生成的语义是什么,它们如何使用?

例如,我能否将 generation 视为 ino 的附加位(类似于某种命名空间),并自由地使用它们将任意生命周期唯一的128位(x86_64 上的 2*sizeof(unsigned long))值映射到inode上?或者,是否只能依次递增使用inode生成号码?当inode编号发生冲突时,但其生成编号不同时会发生什么?

1个回答

14

'generation' 字段对于你的inode编号生成器可能在不同时间为同一对象生成不同的inode编号是很重要的。这在磁盘文件系统中很少见,但在网络文件系统(如NFS,见1)中可能会发生。

1所述,服务器在重新启动后可能会使用不同的(fuse)inode编号/(nfs)文件句柄集。如果发生这种情况,则新的inode编号可能以与服务器重新启动之前分配的inode编号不同的方式映射到对象。

客户端可以在重新启动之前和之后为inode集使用不同的generation编号,以明确表示哪个inode是指的。

如果你的文件系统具有静态的inode generation方案(其中inode编号始终指向同一对象),则无需使用generation编号,而可以将其用于扩展inode编号。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接