LINUX.ORG.RU

Ответ на: комментарий от hibou

Я в том плане, что не всю фс во времени восстанавливать из-за одного файла

в той же btrfs если изменился только один файл - то снапшот будет отличаться ровно на этот один файл

fragment
()
Ответ на: комментарий от hibou

Вот доков мало, приходится по крупицам собирать. Вопрос, имхо, нужно бы разделить на 2. Есть слой адаптации - VFS. Это некий универсальный интерфейс между ядром Linux и кодом файловой системы.

собственно поэтому я здесь

Т.е. нужно искать инфу по VFS. - Тут есть книжка «Разработка ядра Линукс», автор Роберт Лав. Находил еще пару статей, в том числе и на русском. Собственно, тут ничего особенно сложного нет, нужно регистрировать свою фс в ядре, потом заполнять зубодробильные структуры размером на несколько рулонов обоев.

у меня уже больше 1000 строк кода и mount до сих пор неработает.

Например, из самого такого огромного кораллового рифа - msleep(). Коварная функция. Отправляет к-трид (kernel-трид, поток исполнения в ядре, ядро тоже многозадачное :-) ) в сон, присваивает потоку свойство, что его можно перекрыть, т.е. остановить и переключиться на другой поток. НЕЛЬЗЯ вызывать ее из контекста прерывания! Потому что возвращаться будет некуда. Так же она несовместима со спин-блокировками. Тут верно и обратное, если у вас поток может уйти в сон, то НЕЛЬЗЯ использовать спин-блокировки. Казалось бы проблема исчерпана, но! многие функции ядра отправляют к-трид в сон. Причем это не всегда документировано. Например, копирование данных из/в userspace стопроцентно положит ваш поток спать, ядро займется пока более интересными вещами и разбудит ваш поток, когда копирование закончится.

а еще некоторые делают usleep() на пол-секунды в прерывании а потом жалуются что система тормозит :)))

cvv ★★★★★
() автор топика
Ответ на: комментарий от cvv

Ага, ок, я понял, тебе нужно больше по второй части вопроса? Если так, то ведь это целая научная работа. Единой статьи как создать фс нет и не будет. У каждой свой дизайн. Наверное нужно читать про составляющие фс, про методы работы с данными. Тут я тебе не советчик. Да и никто наверно не советчик.

hibou ★★★★★
()
Ответ на: комментарий от cvv

usleep в прерывании скорее всего закончится, хорошо если кернел-паником, а в худшем случае непредсказуемым поведением и будете очень долго искать причину.

hibou ★★★★★
()
Ответ на: комментарий от hibou

Нет по первой. со второй все как-будто более менее понятно, но я все еще заблокан первой частью

cvv ★★★★★
() автор топика

Если только «на поиграться». Для чего-то более серьёзного советую не изобретать велосипед и написать модуль для Reiser4.

mix_mix ★★★★★
()

FUSE

Fuse - однозначно. Порог вхождения - только голый С. Узнаете много нового. Скорее всего необходимость в модуле ядра отпадет сама.

Serik
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.