Ядро Linux 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 (Керування пошуковим записом імені каталогу).

Значення атрибута "+ F" зберігається в інодах окремих каталогів і поширюється на всі вкладені файли та підкаталоги. Інформація про кодування зберігається в суперблоці.

Наразі негативні пошуки не вбудовуються в dcache, оскільки їх все одно довелося б визнати недійсними, оскільки ми не можемо довіряти відсутнім файлам.

Це погано для продуктивності, але для виправлення потрібне певне використання рівня vfs.

Поки що ми можемо жити без цього, як і всі інші.

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

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

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

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

Це також дозволяє коду VFS швидко знаходити правильний запис у кеші, навіть незважаючи на те, що в попередньому пошуку був використаний еквівалентний рядок


Залиште свій коментар

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

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.