Linux Kernel 5.2 на Ext4 позволит искать без учета регистра

без учета регистра

Тед ц'о, автор файловых систем ext2 / ext3 / ext4, принял ветку Linux-next, на база, из которой будет создан релиз Linux Kernel 5.2, набор изменений, которые реализовать поддержку для независимые дела в файловая система Ext4.

Патчи они также добавляют поддержку символов UTF-8 в имена файлов. Режим работы без символов регистра может быть включен в ссылку на отдельные каталоги с помощью нового атрибута «+ F» (EXT4_CASEFOLD_FL).

Без учета регистра для ext4

Когда этот атрибут установлен в каталоге, все операции с файлами и подкаталогами что внутри нее регистр не учитывается, включая регистр будет проигнорирован при поиске и открытии файлов (например, Test.txt, test.txt и test.TXT в аналогичных каталогах) будет считаться одинаковым).

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

Эта операция называется поиском имени файла без учета регистра. Функция настроена как атрибут inode, применяемый к каталогам и наследуемый их дочерними элементами.

Этот атрибут соло можно включить в пустых каталогахs для файловых систем, поддерживающих функцию кодирования, что позволяет избежать конфликта имен файлов, которые различаются только в зависимости от регистра.

По умолчанию, за исключением каталогов с атрибутом «+ F», файловая система по-прежнему чувствительна к регистру. Для управления включением режима без учета регистра предоставляется модифицированный набор утилит e2fsprogs.

Этот патч реализует фактическую поддержку поиска файлов без учета регистра в ext4 на основе бита функции и кодировки, хранящейся в суперблоке.

Работа, на которую требовалось много времени

Патчи были подготовлены Габриэлем Крисманом Бертази, участником Collabora. и были взяты с седьмой попытки после трех лет разработки и удаления комментариев.

Реализация не вносит изменений в формат дискового хранилища и работает исключительно на уровне изменения логики сравнения имен в функции ext4_lookup () и замены хэша в структуре dcache (Directory Name Lookup Cache).

Значение атрибута «+ F» хранится в индексах отдельных каталогов и применяется ко всем прикрепленным файлам и подкаталогам. Информация о кодировании хранится в суперблоке.

На данный момент отрицательные запросы не помещаются в dcache, так как они все равно должны быть признаны недействительными, потому что мы не можем доверять отсутствующим файлам.

Это плохо для производительности, но требует некоторого использования уровня vfs для исправления.

Мы можем пока жить без этого, как и все остальные.

Чтобы избежать столкновений с именами существующих файлов, атрибут "+ F" можно установить только для пустых каталогов в файловых системах., в котором режим поддержки Unicode в именах файлов и каталогов включен на этапе монтирования.

Имена элементов справочника, для которых активирован атрибут "+ F" автоматически переводятся в нижний регистр и отражаются таким образом в dcache, но они хранятся на диске в форме, изначально определенной пользователем.

Новые дисковые хэши вычисляются как хеш всей цепочки наблюдений, а не цепочки напрямую.

То есть, несмотря на обработку имени независимо от регистра, имена отображаются и сохраняются без потери информации о регистре символов (но система не позволит вам создать имя файла с такими же символами, но в другом регистре).

Это также позволяет коду VFS быстро находить правильную запись в кеше, даже если эквивалентная строка использовалась в предыдущем поиске.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.