Das Dateisystem XFS legt in Linux 5.19 die Grundlagen für eine skalierbare Zukunft, zugleich bauen die Kernel-Entwickler den Wi-Fi-6-Support aus. NFS-Server sind im neuen Kernel höflicher, Apple-Fans profitieren von einem Speicher-Feature.
Linus Torvalds hat für das Linux 5.19 nicht weniger als acht Release Candidates testen lassen – Grund dafür waren Sicherheits-Patches. Die jüngste Veröffentlichung birgt zudem ein Novum. Torvalds hat dafür und für Test-Builds, Starts und das Release-Tagging ein Apple-Notebook mit ARM-Hardware und Asahi Linux verwendet. In seiner Release-Mitteilung schreibt er: “Ich habe die Veröffentlichung auf einem ARM64-Laptop durchgeführt. Das ist etwas, auf das ich schon lange gewartet habe, dank des Asahi-Teams ist es endlich Realität. Wir haben schon lange ARM64-Hardware, auf der Linux läuft, aber nichts davon war wirklich als Entwicklungsplattform nutzbar.”
Im NVMe-Bereich haben die Entwickler diversen Code abgeliefert, um die Defizite vieler Consumer-Geräte auszugleichen. Doch das eigentliche Highlight betrifft Linux-Fans mit Apple-Hardware: Ein neuer Treiber für den in Apples M1-SoC integrierten NVMe-Controller erlaubt es Linux-Anwendern, direkt auf die internen Festplatten zuzugreifen [1]. Auch für den Nachfolge-SoC M2 schreitet der Support rasch voran: Nach nur einem Tag Arbeit von Entwickler Hector Martin unterstütze Linux für das M2 Macbook Pro bereits die Hälfte aller Features der restlichen Familie, twitterten die Asahi-Linux-Entwickler [2].
Lokale Datenstapel
Bei den altbewährten Linux-Dateisystemen kündigt Dave Chinner für XFS aufregende Neuerungen an [3]. Die zwei Highlights dieser Entwicklungsrunde heißen Large Extent Counts und Logged Attribute Replay. Beide bilden die Basis für künftige, komplexere Funktionen.
Dank der Large Extent Counts speichere XFS in Zukunft “Hunderte Millionen Extended Attributes” (»xattr«) pro Inode, heißt es in der Ankündigung. Diese Name-Value-Paare erweitern die gewöhnlichen Dateiattribute. Sie bereichern so das XFS-Dateisystem um zusätzliche Fähigkeiten und ermöglichen zum Beispiel fein abgestufte Access Control Lists. Im Zuge der Umbauarbeiten haben die Entwickler laut dem Pull Request zugleich die Zahl der pro Inode unterstützen Data Extents von 237 auf 247 erhöht.
Logged Attribute Replay stellt hingegen eine Infrastruktur bereit, die es erlaubt, Intents zu verwenden, um Attributänderungen vor dem Ausführen im Journal zu notieren. Atomare Transaktionen profitieren dann von diesen geloggten Intents, weil sie diese mitlesen und bestimmte Aktionen bei Bedarf verzögert ausführen. Die Logs helfen auch dabei, nach Abstürzen die Attribute im Kontext der atomaren Transaktionen zu restaurieren.
Im Dateisystem Btrfs erlauben es Subpages, Dateisysteme einzuhängen, die andere Datenblockgrößen als das Parent-Dateisystem und die Host-CPU verwenden. Die unterstützte »PAGE_SIZE« für Subpages liegt nun standardmäßig bei 4 KiB. Zugleich liefern die Entwickler RAID-5/6-Support für das Feature.
Änderungen gibt es auch für den Zoned Mode, mit dem Btrfs sogenannten Zoned Devices gerecht werden will. Die Entwickler setzen die minimal unterstützte Zonengröße explizit auf 4 MiB. Das Dateisystem beansprucht Zonen fortan auch weniger aggressiv, solange es genügend freie Zonen gibt. Zudem steigert Btrfs die Performance an verschiedenen Stellen um einige Prozentpunkte. So eignet sich Copy-on-Write (COW) für bestimmte Workloads weniger gut, weshalb Admins mitunter No-COW-Systeme verwenden. Auf solchen steigern die Entwickler den Schreibdurchsatz nun durch intelligenteres Locking um 3 Prozent. Weniger Blocking beim Reservieren von Speicherplatz beschleunige Lese- und Schreibvorgänge in bestimmten Fällen zudem um 7 Prozent, heißt es in der Commit-Nachricht [4].
Die F2FS-Entwickler basteln am Atomic-Write-Support, der es im Speicher ablaufenden Operationen erlaubt, temporär Daten auf die Festplatte auszulagern und so weitere Atomic Writes zu ermöglichen. Einhergehend damit entfernten sie den Code für flüchtige Schreibvorgänge aus dem Kernel. Obendrein fanden und beseitigten sie diverse Fehler im Garbage Collector [5].
Verzichtbare Inode-Markierungen (Evictable Inode Marks) sind eine Neuigkeit für Fsnotify. Das Flag »FAN_MARK_EVICTABLE« sorgt dafür, dass der Kernel die so markierten Inodes nicht in den Inode-Cache schiebt, was den Systemspeicher entlastet. Die Idee ist es, “weniger interessante” Dateien oder Verzeichnisse zu markieren, um sie dann mit geringerer Priorität zu bearbeiten.
Höfliche NFS-Server
Die Entwickler um Chuck Lever, die am NFS-Daemon arbeiten, führen in der aktuellen Kernel-Ausgabe den “höflichen Server” für das Netzwerkdateisystem ein. Bislang löschte der NFS-Server für nicht mehr antwortende Clients nach 90 Sekunden (der sogenannten Lease-Periode) die Zustandsinformationen über den Zugriff auf Dateien (Open and Lock State). Ein anderer Client konnte dann diese Dateien öffnen und blockieren. Will allerdings kein anderer NFS-Client auf diese Dateien zugreifen, merkt sich der NFSD den Zustand für bis zu 24 Stunden. So kann ein nicht mehr reagierender Client womöglich später mit der Arbeit fortfahren.
Ein weiteres behobenes Problem: Schlug bislang das Anlegen einer Datei unter NFSv4 aufgrund eines internen Fehlers fehl, erhielt der Client zwar eine Fehlermeldung, aber NFS erzeugte die Datei unter Umständen trotzdem als Artefakt. Solche Überbleibsel treten in Fällen von internen Fehlern und Race Conditions nun nicht mehr so häufig auf [6].
Dem NFS-Client hat Entwicklerin Anna Schumaker derweil Attribute für »dacl« (Discretionary Access Control List) und »sacl« (System Access Control List) spendiert. Die Dokumentation bietet seit Neuestem eine ausführliche Erklärung zum Thema Client Identifier.
Die Macher hinter CIFS verbessern derweil Verzeichnis-Leases, indem sie das Caching der Root-Verzeichnisinhalte optimieren. Ein neuer optionaler Mount-Parameter bewirkt zudem, dass CIFS keine Sparse-Dateien mehr erzeugt.
Pakete mit und ohne Kabel
Die Netzwerkentwickler schreiben in ihrer Release-Mitteilung [7] BIG TCP komplett groß. So kapiert jeder sofort, dass der Segmentation Offload von TCPv6 nun auch Mammutsegmente einsetzen kann, deren Größe 64 KByte überschreitet. Das klappt über den sogenannten Jumbogram Extension Header von IPv6. Neu bei den Protokollen ist die Unterstützung eines Path-Managers für Multipath-TCP im Userspace sowie ein Fallback auf reguläres TCP für bestimmte Verbindungen.
Beim User Statically Defined Tracing (USDT) erzeugen Entwickler statische Tracepoints, wo sich dynamische nicht verwenden lassen, um Probleme im Code aufzuspüren. Die Libbpf unterstützt USDT nun ebenfalls. Daneben dürfen Entwickler typisierte Pointer auf referenzierte und unreferenzierte Objekte neuerdings in BPF-Maps ablegen. Der BPF Link Iterator (»bpf_link iterator()«) erlaubt es, mit »bpf_seq_file« über Links zu iterieren. Nicht zuletzt implementieren die BPF-Programmierer rudimentäre Typen von dynamischen Pointern, um etwa ohne zusätzliche Speicherkopien Ringpuffer mit dynamischen Größen zu reservieren.
Im Wi-Fi-6-Bereich gibt es nun einen Host-basierten Support für das Erkennen von Farbkollisionen. BSS Coloring ist eine Technik, um in dicht besiedelten WLAN-Umgebungen überlappende Frequenznutzungen zu erkennen und zu beheben. Daneben warten im Kernel neue Treiber für die Geräte PureLiFi X, XL und XC (»plfxlc«) sowie Silicon Labs (»wfx«). Der letztgenannte Treiber hat bereits einige Zeit im Staging-Bereich verbracht. Der Treiber »ath11k« unterstützt jetzt Qualcomms Wi-Fi-Chip WCN6750, während Realteks 8852ce-Geräte den »rtw89«-Treiber verwenden können.
Zufalls-Los
Auch beim Random-Number-Generator gibt es laut Wireguard-Erfinder Jason Donenfeld Fortschritte [8]. Demnach bilden »/dev/urandom« und »/dev/random« jetzt auf den meisten Plattformen eine identische Entropiequelle – aber nicht auf allen. Man habe sich geeinigt, beide Quellen nur auf solchen Plattformen zusammenzulegen, wo das ohne Hindernisse klappt. Funktioniere die Zusammenlegung mit dem aktuellen Kernel, könne man darüber nachdenken, später auch die restlichen Plattformen anzupassen.
Von Intel kommt derweil Code zu Trusted Domain Extensions, kurz TDX (Abbildung 1). Dank der Patches lässt sich der Kernel als Teil von TDX-Gästen verwenden. Die Intel-Entwickler merken zwar an, dass sich die technische Umsetzung von der von AMDs SEV (Secure Encryption Virtualization) unterscheide, aber TDX ansonsten ähnliche Security-Features für die Gäste biete. Diese Security-Features erlauben es beispielsweise, den Gastsystemspeicher und Registerstatus zu verschlüsseln und die Speicherintegrität abzusichern. Technisch verwendet Intel ein Softwaremodul, das in einem speziellen CPU-Modus namens SEAM (Secure Arbitration Mode) läuft [9].

Abbildung 1: Intels TDX schottet Trust Domains voneinander ab, aber auch von der Host-Plattform. Quelle: Intel.com
Die SELinux-Entwickler liefern nicht nur einen Patch, der ein Speicherleck beim Mounten von Dateisystemen mit SELinux-Optionen behebt, sondern deaktivieren auch bestimmte Funktionen wie »checkreqprot« und »runtime disable«. Beide warten schon länger auf dem Abstellgleis. Über den aktuellen Schritt will man herausfinden, ob Nutzer aufschreien, wenn die Funktionalität fehlt [10]. Fscrypt identifiziert in der neuen Version die verwendete Verschlüsselungsimplementierung konsistenter.
Architekturelles
Der Hypervisor Xen liefert neuerdings auf Frontend-Seite generischen Virtio-Support für Xen-Gäste. Eine personelle Änderung gibt es auch: Boris Ostrowski gehört nicht länger zu den Maintainern der Virtualisierungslösung.
RISC-V-Updates betreffen die »Svpbmt«-Erweiterungen (Supervisor-mode: Page-based Memory Types), die es erlauben, Speicherattribute in Pages zu enkodieren. Damit einher geht ein neu eingeführter Support für die Page-basierten Speicherattribute von Allwinners D1. Zudem unterstützt Linux auf RISC-V nun die Funktion »kexec_file()« [11].
Für die ARM-Plattform warten wie so oft Devicetree-Updates und neue Treiber. So ergänzt Renesas Code für die SoCs R-Car V4H, RZ/V2M sowie RZ/G2UL. Hinzu kommen Updates und Aufräumarbeiten an mehreren Firmware-Treibern für ARMs Firmware-Stack.
Ein- und Ausgabe
Hardwareseitig erwartet Kernel-Nutzer ebenfalls Neues, speziell für Ein- und Ausgabe. So unterstützt der LED-Treiber nun den Light Pulse Generator (LPG) von Qualcomm, einen integrierten Schaltkreis für das Power-Management. Der Wacom-Treiber kommt mit Eingabestiften zurecht, die drei Druckknöpfe mitbringen. Zudem unterstützt Kernel 5.19 weitere Huion-Tablets. Der Code stammt dabei aus dem Digimend-Projekt (Abbildung 2), das es sich zum Ziel setzt, den Linux-Support für Grafiktablets generell zu verbessern [12].
Im Staging-Bereich fällt der »unisys«-Treiber aus dem Kernel, weil ihn niemand mehr nutzt oder die Hardware dafür besitzt. Zudem freut sich Greg Kroah-Hartman über viele weitere Cleanups: Insgesamt verschwinden rund 13 000 Zeilen aus der Codebasis.
Nicht zuletzt gibt es Updates im Grafikbereich [13]. AMD unterstützt neuerdings SoC21-GPUs (aka Navi 31), baut Support für System Management Units ab Version 13 ein und liefert Patches für USB-C. Intel aktiviert auf angepassten Laptop-Modellen (den sogenannten Stock Keeping Units, SKUs) die DG2-GPUs und steuert Code für die P- und S-Serien der “Raptor-Lake”-Architektur bei.
Alles in allem liegen also arbeitsreiche Wochen hinter den Kernel-Entwicklern – und der nächste Kandidat wartet bereits. Kernel 5.20 soll möglicherweise erstmals Support für die Programmiersprache Rust mitbringen [14]. Es bleibt also spannend. Herunterladen lässt sich der aktuelle Kernel auf Kernel.org und Github [15].
Infos
- NVMe-Zugriff für Apple-M1-Nutzer: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cc3c470ae4ad758b8ddad825ab199f7eaa8b0a9e
- Apple-M2-News: https://twitter.com/AsahiLinux/status/1541465035570298880?cxt=HHwWgIDS7YySseQqAAAA
- XFS-Highlights: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=babf0bb978e3c9fce6c4eba6b744c8754fd43d8e
- Btrfs wird schneller: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=bd1b7c1384ec15294ee45bf3add7b7036e146dad
- F2FS-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1501f707d2b24316b41d45bdc95a73bc8cc8dd49
- Höflicher NFS-Server: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6d29d7fe4f0c1e81c39622cce45cd397b23dc48f
- Neues im Netzwerkcode: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7e062cda7d90543ac8c7700fc7c5527d0c0f22ad
- Vereinheitlichter RNG: https://twitter.com/EdgeSecurity/status/1528494394604761094
- Intel TDX: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3a755ebcc2557e22b895b8976257f682c653db1d
- SELinux-News: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=efd1df1982e9203b4f56cb0d5946a24885260ce5
- RISC-V-Plattform: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=35b51afd23c98e2f055ac563aca36173a12588b9
- Digimend-Projekt: http://digimend.github.io/tablets/
- Grafik-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ab18b7b36a82b1900687c5718f7d46f0d8e77d86
- Rust im Kernel 5.20: https://www.theregister.com/2022/06/23/linus_torvalds_rust_linux_kernel/
- Linux auf Github: https://github.com/torvalds/linux







