URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 2457
[ Назад ]

Исходное сообщение
"Как получить список свободных инодов на си?"

Отправлено co6aka , 12-Янв-04 20:59 
Собственно сабж! Подскажите плс если можно поподробнее я только учусь.

Содержание

Сообщения в этом обсуждении
"Как получить список свободных инодов на си?"
Отправлено Murr , 13-Янв-04 01:08 
Вопрос некорректен.

Какова конечная цель?


"Как получить список свободных инодов на си?"
Отправлено co6aka , 13-Янв-04 16:31 
FreeBSD 4.8 мне надо получить номера свободных инодов для того, что бы просмотреть их данные. Ну грохнул я дофига чего(файлы большие и их много ) :( ... Ищу описание ffs(видно плохо ищу, толкового ничего...).  Пока я знаю что при удалении стирается значение di_mode(в моем случае это не кретично) и количество ссылок в di_nlinc приравнивает нулю еще меняет время изменения методанных. Но материал у меня старый и куций ... Какие записи еще изменяются я пока
не знаю, стираются ли блоки косвенной адресации... в общем пока много чего не знаю. И Си я почти не знаю, и руки у меня кривые, и вообще с моими вопросами в больницу!

PS: Конечная цель: ----> Мне надо восстановить файлы.


"Как получить список свободных инодов на си?"
Отправлено Murr , 13-Янв-04 16:49 
ffs описана у Макьюзика.

Можешь посмотреть код восстановления файлов на ext2 (часть Midnight Commander). Будет довольно полезно, т.к. ffs от ext2 мало чем отличается.

А некорректен изначально потому, что на всех современных файловых системах нет никаких списков i-узлов, они выделяются динамически (и inode map может быть truncated).


"Как получить список свободных инодов на си?"
Отправлено ChiP , 14-Янв-04 01:06 
>FreeBSD 4.8 мне надо получить номера свободных инодов для того, что бы
>просмотреть их данные. Ну грохнул я дофига чего(файлы большие и их
>много ) :( ... Ищу описание ffs(видно плохо ищу, толкового ничего...).
> Пока я знаю что при удалении стирается значение di_mode(в моем
>случае это не кретично) и количество ссылок в di_nlinc приравнивает нулю
>еще меняет время изменения методанных. Но материал у меня старый и
>куций ... Какие записи еще изменяются я пока
>не знаю, стираются ли блоки косвенной адресации... в общем пока много чего
>не знаю. И Си я почти не знаю, и руки у
>меня кривые, и вообще с моими вопросами в больницу!
>
>PS: Конечная цель: ----> Мне надо восстановить файлы.

Попробуй посмотреть в сторону /usr/ports/sysutils/ffsrecov/ Однако, она работает только с ufs1.

Удачи!


"Как получить список свободных инодов на си?"
Отправлено co6aka , 14-Янв-04 22:08 
В частности количество инодов постоянно с создания файловой системы.
в моем разделе их должно быть 23604590 если не ошибся в подсчетах.
Если стандартным вызовом нельза получить список, то можно ли как-то иначе его получить? По идее надо перебрать все иноды... (насколько я понимаю так работает debugfs, но она только под linux)Но вот как это сделать... исходники fsck'а помогли бы но я их опять не могу найти.
ffsrecov вещь хорошая, я бы сказал необходимая, но ...

ffsrecov -p -o 364576 /dev/ad0s1d
ошибка симентации (core dumped)
и
qbic# ffsrecov -p /dev/ad0s1d
WARNING: field fs_bmask is invalid, superblock may be corrupt.
doesn't have magic
field fs_bmask does not match parent value.
sblkno:     77204    cblkno:       8    iblkno:   77208    dblkno:       8
cgoffset:   77212    size:             8    dsize:    77220    ncg:          8
bsize:        77224    fsize:            8    frag:     77228    minfree:      8
maxcontig:  77244    maxbpg:       8    fsbtodb:      8    nindir:       8
csaddr:     77276    cssize:       8    cgsize:   77280    ncyl:     77288
cpg:            8    ipg:      77292    fpg:          8    flags:        0
inodefmt: -159010699

fsmnt:
time:  Thu Jan  1 21:26:56 1970 UTC

не думаю что именно такие данные в суперблоке.
При этом fsck говорить что все впорядке да и монтируется все ок.
Или в 4.8 уже по умолчанию ufs2 воткнули, а я и не заметил...

PS: