Ted ts'o, az ext2 / ext3 / ext4 fájlrendszer szerzője, elfogadta a Linux-next ágat, on bázis, amelyből a Linux Kernel 5.2 kiadás jön létre, azon változtatások halmaza támogatás megvalósítása mert független eseti műveletek az Ext4 fájlrendszert.
A foltok emellett támogatják az UTF-8 karaktereket a fájlnevekben. A nem karakteres üzemmód opcionálisan bekerül a külön könyvtárak linkjébe az új "+ F" attribútum használatával (EXT4_CASEFOLD_FL).
Kis- és nagybetűk nem jelentenek ext4-et
Ha ez az attribútum telepítve van a könyvtárba, fájlokkal és alkönyvtárakkal végzett összes művelet amelyek benne vannak nem lesz különbség a kis- és nagybetűk között, az esetet figyelmen kívül hagyja a fájlok keresésekor és megnyitásakor (pl. a Test.txt, test.txt és a test.TXT hasonló könyvtárakban).
Vagyis megegyezik egy könyvtár bejegyzéssel, még akkor is, ha a felhasználói tér által használt név nem a lemez nevének megfelelő bájt, hanem az Unicode karaktersorozat kis- és nagybetűkkel egyenértékű változata.
Ezt a műveletet kis- és nagybetűk nélküli fájlnév-keresésnek hívják. A szolgáltatás egy inode attribútumként van konfigurálva, amely a könyvtárakra vonatkozik és gyermekeik örökölik.
Ez az attribútum csak üres könyvtárakban engedélyezhetős fájlrendszerekhez, amelyek támogatják a kódolási funkciót, elkerülve ezzel a fájlnevek ütközését, amelyek csak eseti alapon különböznek egymástól.
Alapértelmezés szerint, a "+ F" attribútummal rendelkező könyvtárak kivételével, a fájlrendszer továbbra is különbséget tesz a kis- és nagybetűk között. A kis- és nagybetűk nélküli mód beépítésének szabályozásához az e2fsprogs segédprogramok módosított készletét biztosítjuk.
Ez a javítás valósítja meg a kis- és nagybetűk nélküli fájlnév-keresések tényleges támogatását az ext4-ben, a funkcióblit és a szuperblokkban tárolt kódolás alapján.
Olyan munka, amely sokáig tartott
A javításokat Gabriel Krisman Bertazi, a Collabora munkatársa készítette és hároméves fejlesztés és a megjegyzések törlése után a hetedik kísérletből vették őket.
A megvalósítás nem változtat a lemezmegőrzési formátumon, és kizárólag azon a szinten működik, hogy megváltoztatja a név-összehasonlítási logikát az ext4_lookup () függvényben és kivonja a dcache (Directory Name Lookup Cache) struktúrában található kivonatot.
A "+ F" attribútum értéke az egyes könyvtárak inódjaiban tárolódik, és minden csatolt fájlra és alkönyvtárra vonatkozik. A kódolási információkat a szuperblokk tárolja.
Egyelőre a negatív kereséseket nem tesszük a dcache-be, mivel mindenképp érvényteleníteni kellene őket, mert nem bízhatunk a hiányzó fájlokban.
Ez rossz a teljesítmény szempontjából, de a javításához a vfs réteg némi kihasználása szükséges.
Egyelőre nélküle is élhetünk, akárcsak mindenki más.
Az ütközések elkerülése érdekében a meglévő fájlok nevével, a "+ F" attribútum csak üres fájlkönyvtárakban állítható be a fájlrendszerekben, amelyben a fájlok és könyvtárak nevében az Unicode támogatási mód engedélyezve van a csatlakoztatási fázis alatt.
A könyvtárelemek neve, amelyeknél a "+ F" attribútum aktiválva van automatikusan kisbetűvé lesznek fordítva, és így tükröződnek a dcache-ben, de a lemezen a felhasználó által eredetileg meghatározott formában vannak tárolva.
Az új lemezkivonatokat a teljes esetlánc kivonataként, nem pedig közvetlenül a láncként számolják.
Vagyis annak ellenére, hogy a név feldolgozás esettől függetlenül a nevek megjelennek és mentésre kerülnek anélkül, hogy elveszítenék a karakterek esetét (de a rendszer nem engedélyezi, hogy fájlnevet hozzon létre ugyanazokkal a karakterekkel, hanem más esetben).
Ez lehetővé teszi a VFS-kód számára, hogy gyorsan megtalálja a helyes bejegyzést a gyorsítótárban, annak ellenére, hogy egy korábbi keresésben ekvivalens karakterláncot használtak