Jądro Linuksa dla systemu plików Ext4 obsługuje operacje bez rozróżniania wielkości liter

Ted Ts'o, autor systemów plików ext2/ext3/ext4, przyjęty do gałęzi Linux-next, na bazie której powstanie wydanie jądra Linux 5.2, zestaw zmiany, implementując obsługę operacji nieuwzględniających wielkości liter w systemie plików Ext4. Poprawki dodają także obsługę znaków UTF-8 w nazwach plików.

Tryb pracy bez rozróżniania wielkości liter jest opcjonalnie włączany w odniesieniu do poszczególnych katalogów za pomocą nowego atrybutu „+F” (EXT4_CASEFOLD_FL). Gdy ten atrybut jest ustawiony na katalogu, wszystkie operacje na plikach i podkatalogach w środku będą wykonywane bez uwzględnienia wielkości liter, w tym wielkość liter będzie ignorowana przy wyszukiwaniu i otwieraniu plików (np. plików Test.txt, test.txt i test.TXT w takich katalogach będą uważane za takie same). Domyślnie, z wyjątkiem katalogów z atrybutem „+F”, w systemie plików nadal rozróżniana jest wielkość liter. Aby kontrolować włączenie trybu rozróżniania wielkości liter, oferowany jest zmodyfikowany zestaw narzędzi e2fsprogs.

Plastry zostały przygotowane przez Gabriela Krismana Bertazi, pracownika Collabora i zaakceptowane przez firmę siódmy próby po trzy lata rozwój i eliminacja komentarzy. Implementacja nie wprowadza zmian w formacie przechowywania dysku i działa wyłącznie na poziomie zmiany logiki porównywania nazw w funkcji ext4_lookup() oraz zastąpienia hasha w strukturze dcache (Directory Name Lookup Cache). Wartość atrybutu „+F” przechowywana jest w i-węźle poszczególnych katalogów i propagowana do wszystkich podplików i podkatalogów. Informacje o kodowaniu są przechowywane w superbloku.

Aby uniknąć kolizji z nazwami istniejących plików, atrybut „+F” można ustawić tylko dla pustych katalogów w systemach plików, w których na etapie montażu włączona jest obsługa Unicode w nazwach plików i katalogów. Nazwy elementów katalogów, dla których aktywowany jest atrybut „+F”, są automatycznie konwertowane na małe litery i odzwierciedlane w tej postaci w dcache, ale zapisywane są na dysku w postaci wstępnie określonej przez użytkownika, tj. Pomimo przetwarzania nazw bez względu na wielkość liter, nazwy są wyświetlane i zapisywane bez utraty informacji o wielkości liter (system nie pozwoli jednak na utworzenie nazwy pliku zawierającej te same znaki, ale w innym przypadku).

Źródło: opennet.ru

Dodaj komentarz