Linux 6.19 kernel: jelentős NTFS3 hibajavítások és fejlesztések érkeznek

Az NTFS3 fájlrendszer kódjának legújabb frissítése megérkezett a Linux 6.19 kernel kiadáshoz, mely a megszokott javításoknál jóval több módosítást tartalmaz. Konstantin Komarov a Paragon Software fejlesztője által beküldött pull request, számos új funkciót és hibajavítást foglal magában, amely a 6.18-rc1 verzió óta került be.

Linux 6.19 kernel: jelentős NTFS3 hibajavítások és fejlesztések érkeznek

Stabilabb működés és átgondoltabb adatkezelés

A Linux 6.19 kernel kiadáshoz a merge window keretében benyújtott NTFS3 pull request célja, hogy a fájlrendszer stabilabban, kiszámíthatóbban és a régi partíciókkal is gond nélkül működjön. Az egyik legfontosabb fejlesztés, hogy a kernel már az úgynevezett epoch előtti időbélyegeket is helyesen kezeli, vagyis azokat a dátumokat, amelyek még az 1970-ben induló Unix-időszámítás előttről származnak. Ez főleg a régebbi NTFS-meghajtók olvasásakor döntő, ahol a fájlok metaadataiban még előfordulhattak ilyen értékek. A memóriakezelés is biztonságosabb lett: minden lefoglalt területet azonnal lenulláz a rendszer, így teljesen kizárható, hogy valamilyen véletlenül ott maradt adat megzavarja a működést.

A frissítés további részei ezt a stabil, „óvatos” megközelítést viszik tovább. A rendszer nem ír felül olyan memórialapot, amely már érvényes, így elkerülhetők a fölösleges műveletek és csökken az adatütközések kockázata. A tömörített fájloknál a readahead normál esetben gyorsítana, itt azonban épp ellenkező hatást ért el, ezért a fejlesztők inkább letiltották. A readahead egy olyan mechanizmus, amely előre betölti a fájlok adatait a memóriába, még mielőtt a program ténylegesen hozzáférne. Célja a soron következő olvasási műveletek gyorsabbá tétele.

A csatolási folyamat is precízebbé vált: a rendszer egy ideiglenes, minimális blokkmérettel kezdi meg a boot blokk olvasását, hogy megbízható legyen a partíció feldolgozásának kezdete. Kiemelt figyelmet kapott a $Extend könyvtár is, amely az NTFS mélyebb működéséhez szükséges belső struktúrákat tartalmazza. Ennek betöltésekor mostantól külön futtatási zárolás lép életbe, hogy a több szálon futó műveletek ne zavarják egymást. A közvetlen I/O műveletek igazításának ellenőrzése, az fsync működésének leállás közbeni felügyelete, valamint az új NTFS3_IOC_SHUTDOWN ioctl rendszerhívás mind azt szolgálják, hogy a fájlrendszer leállításkor és hirtelen bekövetkező eseményeknél is szabályosan tudjon reagálni.

Kijavított hibák és a kód alapos tisztítása az NTFS3 kernel driverben

A frissítés az új funkciókon felül egy sor, ritkán előforduló, de annál súlyosabb hibát is kijavít. Ilyenek voltak például a bizonyos „sparse run”szerkezetek hibás értelmezéséből fakadó csatolási gondok, vagy egy veszélyes use-after-free hiba, amelynél a kernel az sbi->options mezőt már felszabadított memóriaterületről próbálta elérni. A KMSAN (kernel-szintű hibakereső eszköz) által jelzett inicializálási problémák szintén megoldódtak, és több olyan jogosultságkezelési hiba is, amelyek rosszul feldolgozott ACL-ekhez (hozzáférés-vezérlési lista) vezettek. Ezen felül számos memóriaszivárgást is sikerült megszüntetni, amelyek hosszabb futás után stabilitási gondokat okozhattak volna.

A kód átfogó tisztításon esett át, így frissült a terminológia, javultak a pontatlan kifejezések, és a tömörített fájlok kezelését is új alapokra helyezték. A korábbi megoldás helyett a rendszer mostantól az oldal cache-t használja, ami gyorsabb és megbízhatóbb működést eredményez. A fejlesztésben több szakember vett részt: Bartlomiej Kubik a memória-inicializálást pontosította, Colin Ian King kisebb helyesírási javításokat végzett a dokumentációkban, Edward Adam Davis a zároláskezelés és a memóriafelszabadítás részletein dolgozott, míg a változtatások jelentős részét Konstantin Komarov koordinálta, az időbélyeg-kezeléstől az új ioctl bevezetéséig. Mellettük több fejlesztő gondoskodott arról, hogy a tömörítési folyamatok, a fájl- és rekordkezelés, az inode-logika és a metaadatok feldolgozása mind egy fokkal megbízhatóbb legyen.