Ted Ts’o, autor systemów plików ext2/ext3/ext4, w gałęzi Linux-next, na podstawie której będzie tworzona wersja jądra Linux 5.2, zestaw , implementujących wsparcie dla operacji bez uwzględniania wielkości liter w systemie plików Ext4. Łaty te wprowadzają również wsparcie dla znaków UTF-8 w nazwach plików.
Tryb pracy bez różnicy w wielkości liter można opcjonalnie włączyć w powiązaniu z poszczególnymi katalogami za pomocą nowego atrybutu „+F” (EXT4_CASEFOLD_FL). Po ustawieniu tego atrybutu na katalogu wszystkie operacje na plikach i podkatalogach wewnątrz będą wykonywane bez uwzględniania wielkości liter, w tym wielkość liter będzie ignorowana podczas operacji wyszukiwania i otwierania plików (na przykład pliki Test.txt, test.txt i test.TXT w takich katalogach będą traktowane jako identyczne). Domyślnie, z wyjątkiem katalogów z atrybutem „+F”, system plików nadal pozostaje zależny od wielkości liter. Do zarządzania włączaniem trybu bez różnicy w wielkości liter proponuje się zmodyfikowany zestaw narzędzi. .
Łaty zostały przygotowane przez Gabriela Krisman Bertaziego, pracownika firmy Collabora, i przyjęte po próbie po opracowywania i usuwania uwag. Realizacja nie wprowadza zmian w formacie dysku i działa wyłącznie na poziomie zmiany logiki porównania nazw w funkcji ext4_lookup() oraz zastępowania hash w strukturze dcache (Directory Name Lookup Cache). Wartość atrybutu „+F” jest przechowywana wewnątrz inode poszczególnych katalogów i rozciąga się na wszystkie zagnieżdżone pliki i podkatalogi. Informacje o kodowaniu są zachowywane w superbloku.
Aby uniknąć kolizji z nazwami istniejących plików, atrybut „+F” może być ustawiony tylko na pustych katalogach w systemach plików, w których na etapie montowania włączono tryb wsparcia Unicode dla nazw plików i katalogów. Nazwy elementów katalogów, dla których aktywowano atrybut „+F”, są automatycznie przekształcane na małe litery i są wyświetlane w takiej formie w dcache, ale na dysku są przechowywane w oryginalnej postaci określonej przez użytkownika, tzn. mimo obróbki nazw niezależnie od wielkości liter, nazwy są wyświetlane i przechowywane bez utraty informacji o wielkości liter (jednak system nie pozwoli utworzyć nazwy pliku z tymi samymi znakami, ale w innym rejestrze).
Źródło: opennet.ru
