Fehlerkorrekturen werden zuerst in den Entwickler-Kernel eingepflegt, bevor sie in die stabilen Versionen übernommen werden. Meist funktioniert dieses Vorgehen, aber wenn ein ganz und gar mit Neuerungen vollgestopfter Zweig zum Überprüfen des Patches herhalten muss, kann man mal ein Problem übersehen.
Aaro Koskinen wollte eigentlich ein Problem mit dem Subsystem der Echtzeituhr ausmerzen und reichte dazu Mitte Februar ein Patch mit der Bezeichnung „rtc-core: fix memory leak“ ein. Dieses Patch befreit beim Entladen des Echtzeit-Moduls den Kernel von einer idr-Struktur zum Speichern von Zeigern auf Speicherbereiche, die mit der Zeitberechung in Verbindung stehen.
Damit ist zumindest das Speicherleck gestopft. Jedoch fielen - speziell im Zusammenhang mit dem 2.6.34-rc2 - einige Ungereimtheiten auf. So wurden Einträge beim Speichern insbesondere in Verbindung mit Ext3 mit falschem Datum abgelegt. Beim Ablegen von Metadaten zu in Ext4 abgespeicherten Dateien greift der Kernel auf die rtc_idr-Struktur zu, um den aktuellen Zeitpunkt auszulesen. Tritt der Fall ein, dass diese Struktur nicht mehr existiert, schlägt im besten Falle der Schreibvorgang fehl und erzeugt einen Fehler. Wahrscheinlicher ist jedoch ein fehlerhaftes Datum in den Metadaten, wodurch Konsistenz-Probleme des Dateisystems auftreten können. Auch die Probleme mit den erweiterten Attributen von zum Beispiel SELinux unter 2.6.34-rc1/-rc2 (siehe Linux 2.6.34-rc3) sind hierauf zurückzuführen.
Unglücklicherweise hat es dieser Patch neben dem aktuellen Entwickler-Zweig zwischenzeitlich auch in die stabilen Versionen 2.6.33.1 und 2.6.32.10 geschafft und eventuell auch in die von den Distributoren gepflegten Kernel-Versionen, sodass auch einige Anwender-Systeme betroffen sein dürften. Demnächst sollten Aktualisierungen für den Kernel zur Verfügung stehen, wichtiger sind jedoch Methoden, um eventuelle Fehler im Dateisystem zu beheben. Ein reines
um eine Dateisystemüberprüfung beim nächsten Neustart zu erzwingen, wird hier wohl nicht ausreichen.
Update:
Soviel Schwachsinn habe ich mir schon lange nicht mehr aus den Fingern tropfen lassen - Das war meine Version eines April-Scherzes. Da aber nicht alles an den Haaren herbeigezogen war, versuche ich Fakt von Fiktion zu trennen, soweit ich das selbst noch durchschaue.
Linux 2.6.34-rc3-git1 wurde erst heute veröffentlicht. Koskinens Patch ist real, er ist auch in den genannten Kernel-Versionen enthalten. Er stopft ein Speicherleck, das beim Entladen des Echtzeit-Moduls „rtc“, indem eine Struktur zur Speicherung von Zeigern beim Entladen gelöscht wird und dadurch genutzten Speicher wieder freigibt.
Nicht wahr ist allerdings, dass irgendwelche anderen Komponenten auf diese Zeiger zugreifen um Informationen über die aktuelle Zeit zu erhalten - zumindest hoffe ich das nicht. Es gab wirklich Probleme mit den erweiterten Attributen in Ext3 (siehe Linux 2.6.34-rc3), die sich zum Beispiel auf SELinux ausgewirkt haben.
Wer den obenstehenden Befehl ausgeführt hat, hat seinem Dateisystem nicht geschadet. Im schlimmsten Falle musste er einige Zeit beim nächsten Systemstart warten, bis das Dateisystem vollständig auf Fehler geprüft wurde, im besten Falle hat fsck Probleme gefunden und beseitigt. Trotzdem möchte ich mich bei denen entschuldigen, die genervt auf das Hochfahren ihres Rechners warten mussten. Jenen Befehl schlug im Übrigen Torvalds beim Upgrade von 2.6.34-rc1/rc2 auf 2.6.34-rc3 vor, um eventuellen Problemen mit Ext3 zu begegnen.
Ich hab's gewusst
Ich hab es geahnt, war aber nicht 100% sicher: http://www.deesaster.org/blog/index.php?/archives/1401
Schöner Scherz!
;-)
Hätte ich es nicht selbst geschrieben, hätte ich es ja fast selbst geglaubt.
CU Matze