"Vollkommener Müll!" Linus attackiert die Linux MMC Codeaktualisierung: Es lässt sich nicht einmal kompilieren, und es wurden überhaupt keine Tests durchgeführt.
Es ist allgemein bekannt, dass Linus Torvalds, der Vater von Linux, der schon immer mit einem heftigen Temperament und einer direkten Art bekannt ist, strenge Anforderungen an die Codequalität hat. Insbesondere bei Code, der in den Linux - Kernel integriert werden soll, sind keine Fehler und Nachlässigkeiten erlaubt.
Aber gerade im Entwicklungsprozess des Linux 7.0 - Kernels stießen eine Reihe von geplanten Änderungen am MMC - bezogenen Code direkt auf die Wut von Linus. Er kritisierte die Änderungen heftig mit Äußerungen wie "vollkommener Müll" und "ungetestete Schrottware" und lehnte sie alle rücksichtslos ab. Dadurch wurden alle geplanten Optimierungen des MMC - Subsystems für Linux 7.0 von dieser Version ausgeschlossen.
Was ist MMC?
Das Linux MMC (MultiMediaCard) - Subsystem ist ein Treiberframework im Kernel, das für die Verwaltung der MMC -, SD - und SDIO - Busprotokolle verantwortlich ist. Es treibt nicht nur Speichervorrichtungen wie eMMC und SD - Karten, sondern auch nicht - speichernde Peripheriegeräte, die über eine SDIO - Schnittstelle angeschlossen sind, wie z. B. Wi - Fi - Module und Bluetooth - Adapter. Die Speicher - und drahtlosen Kommunikationsteile in Mobiltelefonen, eingebetteten Geräten, Entwicklungsplatinen und sogar einigen Servergeräten können von diesem Mechanismus abhängen.
Es ist für die Geräteinitialisierung, die Protokollverarbeitung und die Lese - /Schreibplanung auf unterster Ebene verantwortlich. Obwohl normale Benutzer diese Ebene selten direkt berühren, ist es in der tatsächlichen Systemausführung ein unverzichtbarer Teil des Speicherstapels.
Linus lehnt die MMC - Codeänderungen in Linux 7.0 wütend ab
Die Wartungsmitarbeiter des Subsystems planten eigentlich ein Update für das Linux MMC, das einige bemerkenswerte Änderungen enthielt, wie z. B.:
Die Unterstützung der Geräte - ID für den NXP IW61x Wi - Fi - Chip, der über SDIO angeschlossen ist, hinzufügen;
Die Unterstützung der Erkennung des Herstellungsdatums nach 2025 einfügen;
Die sichere Löschung und TRIM - Operationen für einige Kingston eMMC optimieren;
Den DW_MMC - Code aufräumen;
Im mtk - sd - Treiber die Unterstützung für das MediaTek MT8189 hinzufügen und mehrere SHDCI - Treiber aktualisieren.
Auf Funktionsebene sind diese Änderungen nicht sehr radikal, sondern eher eine normale Iteration.
Das Problem liegt im Code selbst und im Prozess.
Nach der langjährigen Tradition der Kernel - Community sollte ein Subsystem - Update vor dem Senden eines Pull - Requests an Linus zuerst in das linux - next - Repository integriert und getestet werden. Die Funktion von linux - next besteht darin, Konflikte zwischen Subsystemen, Kompilierungsprobleme und Integrationsfehler vor der Integration in die Hauptlinie zu erkennen.
Allerdings hatte die MMC - Aktualisierung noch eine Reihe von Problemen, als sie bei Linus ankam.
Linus schrie direkt am Anfang seiner E - Mail: "Diese Änderungen sind vollkommener Müll und können nicht einmal kompiliert werden. Es scheint, dass sie nie in linux - next waren und keine Build - Tests durchgeführt wurden."
Anschließend erklärte er scheinbar geduldig Schritt für Schritt den Beitragenden des Subsystems, was an diesem Code falsch war:
Wenn CONFIG_MULTIPLEXER=m ist, bauen wir diese core.o - Datei:
- obj - $(CONFIG_MULTIPLEXER) += mux - core.o
Aber in include/linux/mux/consumer.h hast du geschrieben:
- #ifdef CONFIG_MULTIPLEXER
Diese Bedingung wird hier nicht erfüllt (weil tatsächlich CONFIG_MULTIPLEXER_MODULE definiert ist), was zu einer Reihe von Fehlern wie dem folgenden führt:
- drivers/mux/core.c:312:14: error: redefinition of ‘mux_control_states’
Weil die Platzhalterfunktion bereits im mux/consumer.h - Header definiert ist.
Mit anderen Worten, der Commit ad314348ceb4 ("mux: Add helper functions for getting optional and selected mux - state") ist vollkommen ungetesteter Müll.
Linus' "Code - Reinlichkeitssucht"
Wer mit der Linux - Community vertraut ist, weiß, dass Linus immer strenge Anforderungen an die Codequalität hat. Diese Aktion ist also gar nicht überraschend. Linux ist der am weitesten verbreitete Open - Source - Kernel weltweit und findet in Servern, Mobiltelefonen und eingebetteten Geräten Anwendung. Die Stabilität und Zuverlässigkeit des Kernel - Codes sind direkt mit dem normalen Betrieb unzähliger Geräte verbunden.
Der Testschritt in linux - next ist die "erste Sicherheitskontrolle" für den Kernel - Code, die Kompilierungs - und Kompatibilitätsprobleme frühzeitig erkennt und verhindert, dass fehlerhafter Code in die offizielle Version gelangt. Dieser MMC - Code hat nicht einmal die Sicherheitskontrolle durchlaufen und hat sogar eine Reihe von Fehlern, was offensichtlich Linus' Grenzen überschritten hat.
Linus' Haltung ist klar:
„Ich möchte nicht mehr von dir einen Pull - Request mit einer 'gefixten Version' sehen. Dies ist völlig inakzeptabel. Ich werde während dieses Integrationsfensters nichts mehr von dir übernehmen.
Schicke mir nicht mehr ungetesteten Müllcode, der nicht in linux - next war und nicht einmal die grundlegenden Prüfungen besteht.
Du kannst es im 7.1 - Zyklus noch einmal versuchen – vorausgesetzt, er ist tatsächlich in linux - next gewesen und wurde richtig getestet.“
Wenn man die Vergangenheit betrachtet, passiert in jedem Versionszyklus des Linux - Kernels ein ähnliches "Letztmoment - Stopp" - Ereignis. Für die Außenwelt sieht es aus wie eine "heftige Kritik"; für diejenigen, die langfristig an der Kernelentwicklung beteiligt sind, ist es eher eine routinemäßige Prozesskorrektur.
Offene Zusammenarbeit bedeutet nicht, dass man die Standards lockert. Genau diese Einhaltung von Prozess und Qualität lässt die Linux - Hauptlinie über Jahrzehnte hinweg bei hoher Iterationsfrequenz relativ stabil bleiben.
Quellen:
https://www.phoronix.com/news/Linux - 7.0 - No - MMC - Changes
https://lore.kernel.org/lkml/CAHk - =wgnRQiKqWVrO_uF1btYM2K8r8xL95RGdKU3QLe8B58nrw@mail.gmail.com/
https://gigazine.net/gsc_news/en/20260212 - linus - torvalds - rejects - mmc - changes - linux - 7/
Dieser Artikel stammt aus dem WeChat - Account „CSDN“, Zusammenstellung: Tu Min, veröffentlicht von 36Kr mit Genehmigung.