LINUX.ORG.RU
решено ФорумTalks

Где чинить FIEMAP - в ядре или пользовательском пространстве?


0

1

Есть такой ioctl, называется FIEMAP. Он служит для той же цели, что и FIBMAP - узнать, где на диске расположен файл. Основное отличие - FIEMAP сообщает не о блоках, а об экстентах файла, причём сразу о нескольких за раз. На файловых системах, поддерживающих FIEMAP, такие программы, как filefrag (сообщает о количестве фрагментов файла), отрабатывают на два порядка быстрее (меньше накладные расходы) и требует только право открыть файл, а не прав root'а, как для FIBMAP.

К сожалению, не все ФС поддерживают FIEMAP, и среди них reiserfs. Так получилось, что у меня на компьютере она используются, и для неё мне очень хочется иметь этот самый FIEMAP. К счастью, есть обобщенная функция, которая позволяет добавить этот FIEMAP с минимальными усилиями, ей только надо передать ссылку на get_block конкретной ФС.

Тут я наконец подхожу к своему вопросу. Так уж получилось, что reiserfs_get_block отдаёт/распределяет только один блок за раз. И это приводит к тому, что даже если файл лежит на диске одним сплошным куском, FIEMAP выдаёт столько экстентов, сколько блоков в файле, и это смущает утилиту filefrag, которая в обычном режиме просто печатает число экстентов, которые возвратил вызов FIEMAP. Очевидно это не совсем то, что можно было бы ожидать. Если попросить filefrag быть более подробной, она начинает замечать, что экстенты лежат рядом, обсчитывает всё более корректно и выдаёт то, что я от неё жду.

И вот вопрос: где надо чинить - в ядре или в filefrag? Ядро должно сливать соседствующие экстенты в один или этим должны заниматься прикладные программы?

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

> в толксы или девелопмент

Это нетехнический вопрос про linux. Я же не спрашиваю, как именно чинить. Судя по заголовкам разделов, толксы для этого и созданы.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от PolarFox

> хакеры ядра

тут скорее нужны «специалисты по всему». Кроме того, тут проскакивала тема про хакеров ядра, в ней столько народу отметилось, так что они тут тоже есть.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от tn1

Для чего созданы и для чего используются - не одно и то же. А вот если бы я запостил в development, набежали бы личности, реплики которых сводились бы к «в толксы».

i-rinat ★★★★★
() автор топика

ИМХО, в filefrag. Этот ioctl может использоваться и другими утилитами и если ты изменишь реализацию в ядре, то сломаешь их.

goose
()
Ответ на: комментарий от PolarFox

> постить можно и в него и на него.

а ещё можно постить мимо. Мимо темы, что ещё называют «не в тему».

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от Ramen

> Это технический вопрос про Linux.

Приведи тогда пример нетехнического вопроса про linux, пожалуйста. Ещё было бы неплохо прочитать список критериев и твоё мнение о вопросе в нулевом сообщении.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от Ramen

> Это дискуссии, связанные с линуксом и при этом не технические.

Эта тоже нетехническая. Техническим тут был только один пост. Не твой.

/thread

Вот всегда было интересно: что творится в голове у людей, когда они пишут «/thread»? Я понимаю конечно, что это намёк на закрывание треда, но выглядит это так же, как если бы человек выходя их квартиры, у которой вместо входной двери дыра, делал движения руками, имитирующие поворот двери и закрывание замка. Вроде как закрыл дверь. Вроде как закрыл тред. Бред.

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

Это означало, что обсуждать здесь больше нечего.

Ramen ★★★★
()
29 октября 2011 г.
Ответ на: комментарий от i-rinat

Исправленная версия пакета от мейнтейнера мигрировала в testing.

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