I'm planning to implement a FUSE filesystem using low-level API and currently trying to understand the fuse_entry_param
structure.
I wonder what unsigned long fuse_entry_param::generation
actually means. Documentation says just that ino
/generation
pair should be unique for the filesystem's lifetime, but does not go into any details.
What's the semantics of inode generations and how they are used?
For example, can I just consider generation
as an additional bit of ino
(like some sort of namespace) and use them freely to map arbitrary lifetime-unique 128-bit (2*sizeof(unsigned long)
on x86_64) values to inodes? Or are generations meant to be only incremented sequentially? What happens when inode numbers collide, but their generation numbers differ?