Конвенция языка C считает индексы массива от 0. Почему inode числа запускаются от 1 а не 0?
Если inode 0 резервируется, для некоторого специального использования, то, каково значение inode 0?
Обычно inode 0 зарезервирован, потому что возвращаемое значение 0 обычно сигнализирует об ошибке. Многократный метод в ядре Linux - особенно в слое VFS, совместно используемый всеми файловыми системами - вернуть ino_t, e.g. Find_inode_Number .
Здесь более зарезервированные номера инодовых номеров. Например, в Ext2 :
#define EXT2_BAD_INO 1 /* Bad blocks inode */
#define EXT2_ROOT_INO 2 /* Root inode */
#define EXT2_BOOT_LOADER_INO 5 /* Boot loader inode */
#define EXT2_UNDEL_DIR_INO 6 /* Undelete directory inode */
и EXT3 имеет:
#define EXT3_BAD_INO 1 /* Bad blocks inode */
#define EXT3_ROOT_INO 2 /* Root inode */
#define EXT3_BOOT_LOADER_INO 5 /* Boot loader inode */
#define EXT3_UNDEL_DIR_INO 6 /* Undelete directory inode */
#define EXT3_RESIZE_INO 7 /* Reserved group descriptors inode */
#define EXT3_JOURNAL_INO 8 /* Journal inode */
и Ext4 имеет:
#define EXT4_BAD_INO 1 /* Bad blocks inode */
#define EXT4_ROOT_INO 2 /* Root inode */
#define EXT4_USR_QUOTA_INO 3 /* User quota inode */
#define EXT4_GRP_QUOTA_INO 4 /* Group quota inode */
#define EXT4_BOOT_LOADER_INO 5 /* Boot loader inode */
#define EXT4_UNDEL_DIR_INO 6 /* Undelete directory inode */
#define EXT4_RESIZE_INO 7 /* Reserved group descriptors inode */
#define EXT4_JOURNAL_INO 8 /* Journal inode */
Другие файлы используют INO 1 в качестве номинальной ночи inode Отказ В целом, файловая система бесплатна для выбора своих номеров INODE и его зарезервированные значения INO (за исключением 0).
0 используется в качестве значения Sentinel , чтобы указать NULL или NOODE. Подобно тому, как указатели могут быть нулевым в C. Без Sentinel, вам понадобится дополнительный бит для проверки, если настроен INODE в структуре или нет.
Здесь подробнее:
Все адреса блока и inode начинаются с 1. Первый блок на диске является блок 1. 0 используется для обозначения нет блокировать. (Редкие файлы могут иметь эти внутри них)
http://uranus.chrysocome.net/explore2fs/es2fs.htm
, например, в старых файловых системах, где каталоги были представлены в виде фиксированного массива записей файлов, удаление файла приведет к настройке inode inode val до 0. При пересечении каталога любой вход с помощью inode of 0 будет игнорироваться.
Когда я писал файловую систему давным-давно, я использовал индекс 0 для псевдо-файла .badblocks
.
В некоторых файловых системах .badblocks
фактически присутствует в корневом каталоге как обычный файл, принадлежащий пользователю root и в режиме 0. root может его открыть, но чтение или запись не определено.
Существует древняя традиция, что индексные дескрипторы начинаются с 1, # 1 - это .badblocks
, а # 2 - корневой каталог. Несмотря на то, что .badblocks
не особенно хорошо гарантирован, многие файловые системы делают все возможное, чтобы сделать root # 2.