LINUX.ORG.RU

ext4 mini driver

 ,


0

1

Пишу свой собственный простой мини-драйвер ext4, используя сорцы и спецификацию Linux. Драйвер должен корректно читать и писать произвольные файлы. Грубо говоря, с чтением есть понимание:

1. Читаем SuperBlock. 
2. Получаем смещение и строим GroupDesсriptors
3. Читаем рутовую ноду EXT4_ROOT_INO
4. Смотрим на флаги в нодах: EXT4_EXTENTS_FL (классическая развертка) или EXT4_INDEX_FL (htree)
5. Читаем node->i_blocks[]
6. Строим extents tree (в зависимости от глубины)
7. Получаем dir_entries с нодами конктреных файлов/суб-директорий

Как правильно записать произвольный файл (до 10 Мб) на ext4 диск??

1. Зная размер под запись, вычислить количество блоков и зарезерировать их
2. Зарезервировать ноду через bitmap
3. Приаттачить ноду к dir_entry
4. Обновить счетчики в SuperBlock, пересчитать CRC
5. Внести изменения в журнал?