LINUX.ORG.RU
ФорумTalks

ListFS

 


2

3

Продолжение треда Я написал ненужно, поздравьте меня. В прошлом треде мне сказали слишком мало «не нужно», поэтому я решил продолжить разработку :-)

Итак, я написал более-менее полноценный (ну... во всяком случае он реализует все функции, которые в принципе есть в ListFS, другое дело, что их там не так уж много) FUSE-драйвер для ListFS. Теперь любой желающий может смонтировать ListFS в любой каталог и начать активно просматривать список файлов (readdir), создавать (mknod, mkdir) и удалять (unlink, rmdir) файлы и каталоги, читать и писать файлы (open, close, read, write, truncate). Разумеется, я совершенно не гарантирую, что после очередной операции ФС в образе не превратится в тыкву (самое весёлое было, когда в ней полявился бесконечный каталог и при попытки ls его всё повисало и начинало отжирать память).

Исходники:

https://github.com/kiv-apple/ListFS

Использование:

listfs-tool create disk.img 2048 1024 # Создание образа ФС из 2048 блоков по 1 КБ (запрещается вызывать команду с размером блока менее 512 байт)
listfs-tool mount disk.img /mnt
...
fusermount -u /mnt

Ну и да, сам код взаимодействия с ФС реализован в виде библиотеки, поэтому при желании ListFS можно задействовать в своём проекте (правда не знаю зачем это кому-то может понадобится).

По сравнению с предыдущей версией код стал более-менее структурированным и читаемым, а также вполне возможно улучшилась стабильность и скорость работы. Ну и, разумеется, я сломал совместимость со старой версией, потому что когда я писал ту рассылку я кое-что не учёл и работать со старым форматом ФС слишком неудобно. Теперь уже архитектура более-менее нормальная, больше ломать совместимость не буду.

Приглашаю всех желающих протестировать как оно работает (мне самому это очень интересно). Ну а уж если кто-то соизволит открыть исходники, ужаснуться и написать дельное замечание/предложение, то это вообще замечательно.

Linux тут при том, что данное приложение на офтопике не получится запустить при всём желании.

Да, я хочу распространять это поделние под GPL. Какие минимальные действия мне необходимо сделать для этого?

★★★★★

А в чём сила, брат?
Гхм. В чём суть ФС? Что она умеет странного? Ну кроме как глючить?

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

То что она очень простая, поэтому при желании её может быстро понять кто угодно и использовать при написании своей операционки или изучения принципов работы ФС.

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

Тогда может тебе стоит её вычистить до состояния «рабочего макета»?
Сделать эдакое пособие для начинающих?

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

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

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

Да, я хочу распространять это поделние под GPL. Какие минимальные действия мне необходимо сделать для этого?

Приложи лицензию и всё, а библиотеку бы под LGPL

Dron ★★★★★
()

Вылижи сыр до блеска, прокомментируй и будет отличное пособие для обучения/видоизменения/встраивания.

Dron ★★★★★
()

Пробовал собрать под какой-нить 8битник? на десктопе оно нахрен не надо, а вот на avr/msp430/stm32 если занимает не особо много флеша было бы вином.

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

Если куда-нибудь запихнёшь, дай мне знать, пожалуйста. Всё же интересно было бы увидеть свой код в чужом проекте :-)

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

Ну, ты можешь сам попробовать:

http://github.com/nekromant/antares/

stm32, msp430, avr, 8051, pic32 - если чего под рукой будет все велкум, все поддерживается. webconn недавно stm32f4x наконец-то вычистил и поднял ;) Просто если я это запихну в antares, то сразу вопрос как поддерживать это дело, чтобы fuse и antares части были синхронны. У меня там VFS слой давно напрашивался, но времени запилить не было. Да и код надо на трезвую голову отревьювить в идеале, понять как оно у тебя работает.

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

Ну использование FUSE совершенно не обязательно. Главное запихнуть liblistfs и дёргать из своего кода её (пример - функция форматирования из listfs-tool создаёт на новой ФС файл README с текстом без всяких VFS, прямыми обращениями к liblistfs).

Из зависимостей у самой liblistfs по идее только libc (менеджер памяти, да строковые функции).

KivApple ★★★★★
() автор топика
Последнее исправление: KivApple (всего исправлений: 2)

запрещается вызывать команду с размером блока менее 512 байт

Запрещается, да. А что будет?

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

Каталоги и файлы хранятся в виде двунаправленных связанных списоков. 1 каталог - 1 список. Подкаталог имеет в своём заголовке поле, указывающее на первый файл из этого каталога. Таким образом количество файлов и их вложенность ничем не ограниченна.

Учёт занятых блоков идёт с помощью битовой карты (нужно, чтобы искать свободный блок, куда поместить новые данные).

Есть сигнатуры в каждом иноде и в суперблоке, а так никакой возможности найти ошибки и устранить их в настоящий момент нет.

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

Уже ничего, напишет ошибку.

А на момент написания проверки не было. И если указать размер блока меньше размера какой-нибудь структуры ФС, то это плохо кончилось бы.

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

Да, я видел. Надо посмотреть, какие хедеры убрать можно. Просто на голом железе там в виде libc либо avr-libc, либо newlib, либо костылище_пиковское, либо трешак из msp430 или sdcc. Так что для голого железа придется, возможно корячить.

ncrmnt ★★★★★
()

каков максимальный размер файла и самой файловой системы ?
есть планы по внедрению в ядро как стандартного модуля ?

kto_tama ★★★★★
()
Последнее исправление: kto_tama (всего исправлений: 2)
Ответ на: комментарий от kto_tama

Максимальный размер файла 2 ^ 64 - 1 байт (ограничение накладывает лишь ширина поля размера в иноде), то есть 16 зебибайт.

Максимальный размер блока 64 КБ. Максимальный размер ФС 2 ^ 64 - 2 блок. То есть, если я не обсчитался, 1 йобибайт.

Планов по написанию модуля ядра нет, потому что это слишком сложно для меня, да и цена ошибки в режиме ядра слишком велика (падение fuse-драйвера приведёт лишь к аварийному прерыванию операций ввода-вывода).

А вот пакет для дистрибутивов вполне можно сделать, если его кто-нибудь согласится включить.

KivApple ★★★★★
() автор топика
Последнее исправление: KivApple (всего исправлений: 2)
Ответ на: комментарий от Dron

Ну, в принципе, неплохая. Только хочу уточнить, с проприетарными библиотеками позволяет статически линковать или нет?

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

Да. К примеру SDL некоторые сеньоры и сеньориты проприетарщики линковали и ничего, явного запрета на это нет в лицензии, но ты будешь обязан указать что ты её прилинковал а если изменил то выдать её исходники. В любом случае автор треда ТС спроси у него, он может тебе право дать/продать на использование под любой другой лицензией.

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

Ну если укажешь в README своего продукта, что использовал мои наработки, то я в принципе не против.

Только скажи зачем, если не секрет.

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

сам же хочу писать ОС

Это не очень благодарное занятие. Я много много лет пишу, но за рамки хобби это не выходит. Прежде всего нет смысла надеяться, что прийдут разработчики и начнуть активно помогать. Максимум - можно получить некоторое внимание от любознательных разработчиков и приток «школьников» со своими «гениальными идеями».

Дело в том, что место свободной ОС уже занято - мы сейчас находимся на сайте, посвященной этой самой ОС.

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

лучше б гну/хёрд развивал, раз уж микроядра нравятся

У GNU/Hurd нет будущего - его изначально неправильно спроектировали и он так и не смог избавиться от родовых травм.

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

что конкретно не так?

Асинхронные сообщения. Там, где начинается использование асинхронных сообщений для системных вызовов, там монолоитные ядра начинают сразу рвать по производительности микроядра. Только на ЛОРе уже раз 5-10 холиварили на эту тему. Честно - не интересно очередной раз обсуждать - сейчас не осень.

alman ★★★
()
Последнее исправление: alman (всего исправлений: 1)
Ответ на: комментарий от kike

Да. только мои сообщения с форума потёрты. Ответы с цитатами есть, а сообщений нет. Ник: ram

Какой-то «добрый» человек(?) нас знатно проспамил. Судя по массивности атаки, это было нечто ботнета. Когда форум зачищался от спама, случайно было стёртно несколько полезных сообщений. Приношу извинения.

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