Kernel-Log: Was 2.6.28 bringt (1) – ATA-Unterstützung und Block-Layer
"Disk Shock Protection" soll Schreib/Leseköpfe von Festplatten bei drohender Erschütterungen parken; verschiedene Verbesserungen für SSDs im Block-Layer; IO CPU Affinity sorgt für mehr Durchsatz; 15-Partitionen-Limit bei Libata beseitigt
In der knappen Woche seit der Veröffentlichung von Linux 2.6.27 haben die Kernel-Entwickler bereits über 4000 Patches in den Hauptentwicklungszweig von Linux integriert, aus dem Ende Dezember oder Anfang Januar die Kernel-Version 2.6.28 hervorgehen wird. Ein einzelnes Kernel Log, dass all diese Änderungen zu beschreiben versucht, würde schnell den Zeitrahmen sprengen, der vielen Lesern im hektischen Alltag zur Verfügung steht; daher werden wir uns thematisch sortiert mit den während dieses Entwicklungszyklus vorgenommenen Änderungen an den verschiedenen Bereichen des Linux-Kernel befassen.
Beim im wesentlichen auf Parallel-ATA abgestimmten IDE-Subsystem etwa gab es wie schon bei den vorangegangenen Kernel-Versionen wieder zahlreiche größere Änderungen (1, 2), obwohl alle gängigen, durch die Treiber des IDE-Subsystems unterstützten ATA-Controller schon länger auch von den neueren Libata-Treibern angesprochen werden können. Da sich die Entwickler aber nicht auf ein Framework einigen können, wird das ältere IDE-Subsystem wohl auch in naher Zukunft weiter gepflegt, obwohl Libata dies ursprünglich ersetzen hätte sollten.
Die Unterstützung für "Disk Shock Protection" implementierten die Entwickler daher gleich für beide Subsystemen (Libata, Ide, Dokumentation) – in Verbindung mit den Daten von Beschleunigungssensoren kann so eine Userspace-Anwendung den Kernel in Zukunft anweisen, die Schreib-/Leseköpfe der Festplatten schnellstmöglichst für einen spezifizierten Zeitraum zu parken, um die Festplatte vor Beschädigungen durch Erschütterungen zu schützen. IBM hat eine solche "Active Protection System (APS)" genannte Technik bereits vor Jahren bei mit Windows laufenden Thinkpad-Notebooks eingeführt; mit einigen Thinkpad-spezifischen Treibern sowie Vorläufern des jetzt aufgenommenen Codes lässt sich diese Funktion teilweise auch schon jetzt unter Linux nutzen.
Größere Änderungen gab es auch am Block Layer, das verschiedene Basisfunktionen zum Lesen und Schreiben von Datenträgern liefert. So kann [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8bff7c6b0f63c7ee9c5e3a076338d74125b8debb Libata] dem übergeordneten Blocklayer nun mitteilen, ob es sich bei einem Datenträger um eine SSD (Solid-state drive) handelt; die zum Block Layer gehörenden IO-Scheduler CFQ oder AS können anhand dieser Informationen den Datenfluss entsprechend anders behandeln und brauchen bei SSDs dann nicht mehr wie bei Festplatten auf die Zugriffszeiten zum Positionieren der Schreib-/Leseköpfe Rücksicht nehmen. Dateisysteme können dem Block-Layer über die neue Discard-Funktion (LWN.net-Artikel) nun mitteilen, wenn bestimmte Bereiche (Blöcke) des Datenträgers nicht mehr in Benutzung sind – auch dies ist für SSDs wichtig, damit etwa deren Wear-Leveling-Einheit weiß, welche Blöcke belegt sind.
IO CPU Affinity soll auf Mehrkern- oder Multiprozessor-Systemen den Datendurchsatz steigern und die CPU-Belastung reduzieren. Dazu versucht das Block-Layer die Daten mit dem Prozessor weiterzuverarbeiten, mit dem zuvor die Datenanforderung erfolgt ist, da die Daten dort vielfach noch im CPU-Cache sind. Zudem unterstützt der Block Layer nun die Größenänderungen von Block-Devices zur Laufzeit und bietet Xen-Gästen über den Treiber blkfront Zugriff auf mehr als 16 virtuelle Datenträger. Ein ganzer Schwung kleiner Block-Layer-Patches von Libata-Entwickler Tejun Heo räumt zudem die Beschränkung auf maximal 15 Festplattenpartition bei über Libata angesteuerte Datenträgern aus.
Weitere Commits aus dem Bereich ATA- und Block-Layer-Bereich:
- block: unify request timeout handling
- block: add fault injection mechanism for faking request timeouts
- ide: add proper PCI PM support (v2)
- ide: /proc/ide/hd*/settings rework
- ide-generic: handle probing of legacy io-ports v5
Weitere Hintergründe und Informationen rund um Entwicklungen im Linux-Kernel und dessen Umfeld finden sich auch in den vorangegangen Ausgaben des Kernel-Logs auf heise open:
- 16.10.2008: neue Catalyst-Treiber, 2.6.27.1 beseitigt Ursache für e1000e-Problem
- 15.10.2008: Dateisystem Ext4 verlässt Entwicklungsphase – ein Zwischenstopp auf dem Weg zu btrfs
- 15.10.2008: Neues zu Linux auf dem Linux-Kongress 2008
- 13.10.2008: Neue Stable-Kernel und Nvidia-Treiber, 2.6.27 wird lange gepflegt
- 10.10.2008: Viel bewegt – Die Neuerungen von Linux 2.6.27
- 06.10.2008: e1000e-Problem umschifft, Morton lobt Btrfs
- 30.09.2008: 2.6.27 nähert sich Fertigstellung, Btrfs bald im Kernel?
- 25.09.2008: Kernel-Summit-Infos und Plumbers-Keynote online, Neues vom e1000e-Problem
- 18.09.2008: Zweiter Tag des "Kernel-Summit 2008", Ubuntu-Kritik bei Eröffnung der Linux Plumbers Conference
Ältere Kernel-Logs finden sich über das Archiv oder die Suchfunktion von heise open.