A Linux 7.1 kernelhez egy új FSMOUNT_NAMESPACE funkció érkezik

A VFS fába bekerült Christian Brauner javítócsomagja, amely az fsmount() rendszerhívást kiegészíti az FSMOUNT_NAMESPACE jelzővel. A várhatóan a Linux 7.1 kernelben érkező bővítés lényege, hogy a kernel immár egyetlen műveletben tud létrehozni egy fájlrendszert, majd azt rögtön egy frissen nyitott mount névtérhez csatolni. Ez a bővítés elsősorban a konténerfuttatók számára lehet érdekes, mert a fájlrendszer létrehozását és az új mount névtérhez rendelését egyetlen lépésbe vonja össze.

A Linux 7.1 kernelhez egy új FSMOUNT_NAMESPACE funkció érkezik

Egy rendszerhívás, egy külön mount névtér

Az FSMOUNT_NAMESPACE jelzővel az fsmount() most már nemcsak egy leválasztott mount leírót tud visszaadni, hanem egy névtér-fájlleírót is, hasonlóan ahhoz, ahogyan az open_tree() OPEN_TREE_NAMESPACE jelzővel működik. A gyakorlati eredmény az, hogy egy frissen létrehozott fájlrendszert azonnal át lehet tenni egy új mount névtérbe, anélkül hogy ezt utólag, külön lépésekből kellene felépíteni. Ez egyszerűbbé teszi azokat a folyamatokat, ahol a cél nem egy meglévő mount másolgatása, hanem egy elkülönített környezet gyors felhúzása saját névtérrel.

A patch ehhez a jogosultsági ellenőrzést is külön kezeli. Ha valaki az FSMOUNT_NAMESPACE jelzőt használja, ahhoz CAP_SYS_ADMIN jogosultság kell az aktuális user namespace-ben. Ha ez a jelző nincs jelen, a kernel marad a korábbi mountolási feltételeknél. A kód ezzel világosan szétválasztja a hagyományos fsmount-használatot és azt az esetet, amikor a hívás már névtér-létrehozási szerepet is kap.

Konténeres felhasználásra szabva

A commit másik érdekes része az, ahogyan a kernel a névtér gyökerét és az újonnan létrehozott mountot kezeli. A leírás szerint a rootfs mount még a valódi rootfs másolása előtt jön létre, ezért a névtér gyökeréhez tartozó mountazonosító nagyobb lehet annál a gyermekmountnál, amely később rákerül. Brauner szerint erre az azonosító-sorrendre a kernel eddig sem adott garanciát, így ebből nem érdemes stabil viselkedést levezetni. Ezt kihasználva a patch megcseréli a mountazonosítókat, és ezzel elkerül egy újabb felesleges másolást.

Bár egy átlagfelhasználó szemszögéből ez a fejlesztés nem számít különösen érdekesnek, de a konténeres infrastruktúrában komoly szerepe lehet. A patch célja nem pusztán annyi, hogy egy új zászló kerüljön a mount API-ba, hanem az, hogy a kernel közvetlenül támogassa azt a munkamenetet, ahol egy fájlrendszer rögtön saját mount névtérrel együtt születik meg. Ez kevesebb köztes lépést, tisztább vezérlést és egyszerűbb implementációt adhat azoknak a komponenseknek, amelyek izolált környezeteket építenek a VFS primitívjeire.

További részletek a commitban olvashatóak.

Gábor a Pingvinbázis alapítója és főszerkesztője, több mint 20 éves tapasztalattal rendelkezik a Linux rendszerek és az Open Source szoftverek területén. Jártas a Python, és a PHP nyelvben, valamint a BASH scriptelésben is.