Я планирую реализовать файловую систему FUSE с использованием низкоуровневого API и в настоящее время пытаюсь понять структуру fuse_entry_param
.
Интересно, что на самом деле означает unsigned long fuse_entry_param::generation
. В документации говорится, что пара ino
/ поколение
должна быть уникальной на протяжении всего времени существования файловой системы, но не вдается в подробности.
Какова семантика генерации инодов и как они используются?
Например, могу ли я просто рассматривать поколение
как дополнительные биты ino
(как своего рода пространство имен) и свободно использовать их для сопоставления произвольных уникальных 128-битных ( 2*sizeof(unsigned long)
на x86_64) значения в иноды? Или поколения должны увеличиваться только последовательно? Что происходит, когда номера инодов совпадают, но номера их поколений различаются?