В одном физическом файле одновременно может быть только один struct inode
.
В большинстве файловых систем номер инода останется прежним, даже если struct inode
освобожден и прочитан позже, так что вы можете идентифицировать это (плюс номер устройства), но есть исключения. Но всегда гарантируется, что, по крайней мере, только один файл на устройстве будет иметь определенный номер inode в любой момент времени (это используется для проверки того, что два открытых дескриптора файла указывают на один и тот же файл в пользовательской области, где у вас нет доступа к struct inode
- в ядре сравнение указателей будет проще).
С одним файлом может быть связано больше struct file
, по одному на каждый дескриптор файла в каком-либо процессе, и с ним может быть связано более одного struct dentry
, по одному на жесткую ссылку.
Из этого следует, что существует только один struct dentry
для любого пути в файловой системе. Однако путь может выглядеть по-разному с другой точки зрения процесса (например, chroot и пространства имен). Его можно восстановить, пройдя по цепочке зубных рядов и инодов (у каждого зубного узла есть родительский инод, и у каждого индексного узла есть связанные с ним зубные протезы), но вы должны быть осторожны, чтобы избежать незаметных для текущего процесса зубных протезов.