A Linux kernel 6.17 első kiadásra jelölt változata jelentős előrelépést hoz az ext4 fájlrendszer fejlesztésében, különös figyelmet fordítva a skálázhatóság és a blokkallokáció hatékonyságának javítására. Theodore Ts’o bejelentése szerint a blokkallokációs mechanizmus új struktúrák bevezetésével és párhuzamosságra alkalmasabb működéssel bővült, amely több globális célt használ a versenyhelyzetek csökkentésére, valamint xarray adatszerkezetre támaszkodik a szabad csoportok hatékonyabb kezeléséhez. A csoportválasztási logika is jelentős átalakításon ment keresztül, több kódút refaktorálása mellett. Külön fejlesztésként jelent meg az ext4_try_lock_group() függvény, amely lehetővé teszi a foglalt csoportok kihagyását, valamint a lineáris szkennelést imitáló keresési mechanizmus is bekerült. A cél az ext4 blokkkezelésének kiszámíthatóbb és terhelés alatt is stabilabb viselkedése.
Tartalomjegyzék

Továbbfejlesztett nagyméretű lapkezelés
A kiadás lényeges eleme a nagyméretű lapok kezelésének továbbfejlesztése, különös tekintettel azokra az esetekre, amikor az adatok háttértárra írásakor nem áll rendelkezésre elegendő tranzakciós kredit. A módosítások célja, hogy az ext4 megbízhatóan tudja kezelni az ilyen írási műveleteket anélkül, hogy adatvesztés vagy rendszerinstabilitás fordulna elő. Továbbfejlesztették a visszaírási útvonal megfigyelését segítő eseménypontokat, pontosították a blokkfoglalás működését az ext4_page_mkwrite() kódrészben, valamint átdolgozták a kreditkezelés logikáját, hogy az már előre tudjon számolni az egyes foglalási egységekhez szükséges erőforrásokkal.
Emellett több hibát is kijavítottak, amelyek főként a kiterjesztett attribútumok, az inline adattárolás vagy a gyors naplózás használatakor jelentkeztek. Ilyen volt például az a probléma, amikor az INLINE_DATA_FL jelző aktív volt, de hiányzott a hozzá tartozó system.data attribútum – ez korábban hibához vezetett, az új kódban viszont már nem okoz rendellenes működést.
Karbantartási és kódminőségi javítások
A funkcionális fejlesztések mellett az ext4 alrendszer általános karbantartása is hangsúlyt kapott. Eltávolították a fölösleges kódrészletek ismétlődéseit, a szöveges egyezések vizsgálatát pedig közvetlen karakterellenőrzéssel váltották fel a hatékonyabb működés érdekében. Több olyan régi elem is kikerült a kódból, amely már nem játszott aktív szerepet a működésben. A hibakeresés megkönnyítése érdekében szétválasztották a célzott műveleti találatokat az általános statisztikai nyilvántartástól, emellett kijavítottak több visszatérő hibát is, például a töredezettségi adatok listájának hibás karbantartását, illetve a legnagyobb szabad blokkok nyilvántartásának megsérülését. A tesztelési környezet sem maradt érintetlen: a kballoc-test.c kunit alapú tesztmodulban új mezőkkel bővítették a szuperblokk inicializálását.
