как напечатать косвенный блок в ext2

Я пытаюсь распечатать все отдельные косвенные блоки в файловой системе ext2. Я могу достаточно легко напечатать прямые блоки (0-11), но я не понимаю, как добраться до одиночных косвенных блоков, а затем и двойных и тройных косвенных блоков. Если я посмотрю на значение ino->i_block[12], как мне его использовать, чтобы добраться туда, куда оно указывает? Я уверен, что мне не хватает чего-то легкого здесь


person Matthew The Terrible    schedule 20.03.2013    source источник


Ответы (1)


Индексный дескриптор в EXT2 имеет длину 128 байт и содержит множество различных полей.

поле i_size указывает количество байтов, хранящихся в файле, т. е. длину файла. массив i_block представляет собой массив из 15 номеров блоков.

Первые 12 записей в массиве (от i_block[0] до i_block[11]) содержат номера блоков прямых блоков: они называют блоки данных, которые содержат первые 12 блоков содержимого файла.

13-я запись в массиве (i_block[12]) содержит номер блока однократно косвенного блока: он называет блок, который содержит массив из 4-байтовых номеров блоков; каждый из этих блоков содержит дополнительное содержимое файла.

14-й элемент массива (i_block[13]) содержит номер блока с двойной косвенностью: он называет блок, содержащий массив 4-байтовых номеров блоков, каждый из этих блоков находится в блоке с одинарной косвенностью, который содержит массив 4-байтовых номеров блоков прямых блоков. 15-я запись в массиве (i_block[14]) содержит номер блока тройного косвенного блока.

person Kinjal Patel    schedule 20.03.2013
comment
Источник: cs.washington.edu/education/ курсы/451/09сп/проекты/ - person Jorge Israel Peña; 20.03.2013