В ядро Linux для ФС Ext4 включена поддержка работы без учёта регистра символов

Тед Цо (Ted Ts’o), автор файловых систем ext2/ext3/ext4, принял в ветку Linux-next, на основе которой будет сформирован выпуск ядра Linux 5.2, набор изменений, реализующих поддержку регистронезависимых операций в файловой системе Ext4. Патчи также добавляют поддержку символов UTF-8 в именах файлов.

Режим работы без различия регистра символов опционально включается в привязке к отдельным каталогам при помощи нового атрибута »+F» (EXT4_CASEFOLD_FL). При установке данного атрибута на каталог все операции с файлами и подкаталогами внутри будут производиться без учёта регистра символов, в том числе регистр будет игнорироваться при операциях поиска и открытия файлов (например, файлы Test.txt, test.txt и test.TXT в подобных каталогах будут считаться одинаковыми). По умолчанию, за исключением каталогов с атрибутом »+F» , ФС продолжает быть регистрозависимой. Для управления включением регистронезависимого режима предлагается модифицированный набор утилит e2fsprogs.

Патчи подготовлены Gabriel Krisman Bertazi, сотрудником компании Collabora, и приняты с седьмой попытки после трёх лет разработки и устранения замечаний. Реализация не вносит изменения в дисковый формат хранения и работает исключительно на уровне изменения логики сравнения имён в функции ext4_lookup () и замене хэша в структуре dcache (Directory Name Lookup Cache). Значение атрибута »+F» сохраняется внутри inode отдельных каталогов и распространяется на все вложенные файлы и подкаталоги. Информация о кодировке сохраняется в суперблоке.

Для того чтобы избежать коллизий с именами существующих файлов атрибут »+F» может быть установлен только на пустые каталоги в файловых системах, в которых на этапе монтирования включён режим поддержки Unicode в именах файлов и каталогов. Имена элементов каталогов для которых активирован атрибут »+F» автоматически переводятся в нижний регистр и отражаются в таком виде в dcache, но на диске сохраняются в изначально заданном пользователем виде, т.е. несмотря на обработку имён независимо от регистра, имена показываются и сохраняются без потери информации о регистре символов (но система не даст создать имя файла с теми же символами, но в другом регистре).

©  OpenNet