zurück zum Artikel

Kernel-Log: Was 2.6.28 bringt (1) – ATA-Unterstützung und Block-Layer

Kernel-Log-Logo

In der knappen Woche seit der Veröffentlichung von Linux 2.6.27 [1] haben die Kernel-Entwickler bereits über 4000 Patches in den Hauptentwicklungszweig [2] von Linux integriert, aus dem Ende Dezember oder Anfang Januar die Kernel-Version 2.6.28 hervorgehen wird. Ein einzelnes Kernel Log [3], 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 [4] 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 [5], 2 [6]), 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 [7], 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 [8], Ide [9], Dokumentation [10]) – in Verbindung mit den Daten von Beschleunigungssensoren kann so eine Userspace-Anwendung [11] 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 [12].

Größere Änderungen [13] 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 [14] 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 [15] 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 [16]) 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 [17] 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 [18]. 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:


Weitere Hintergründe und Informationen rund um Entwicklungen im Linux-Kernel und dessen Umfeld finden sich auch in den vorangegangen Ausgaben des Kernel-Logs [24] auf heise open:

Ältere Kernel-Logs [34] finden sich über das Archiv [35] oder die Suchfunktion [36] von heise open [37].


URL dieses Artikels:
http://www.heise.de/-211777

Links in diesem Artikel:
[1] https://www.heise.de/ct/artikel/Viel-bewegt-Die-Neuerungen-von-Linux-2-6-27-221594.html
[2] http://www.heise.de/glossar/entry/Hauptentwicklungslinie-397933.html
[3] http://www.heise.de/glossar/entry/Kernel-Log-397909.html
[4] http://www.heise.de/glossar/entry/Entwicklungszyklus-des-Linux-Kernels-397915.html
[5] http://thread.gmane.org/gmane.linux.ide/35060
[6] http://thread.gmane.org/gmane.linux.ide/35136
[7] http://thread.gmane.org/gmane.linux.ide/35132/focus=35154
[8] http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=45fabbb77bd95adff7a80bde1c7a0ace1075fde6
[9] http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4abdc6ee7c47a1a6e12f95717e461baeebee5df7
[10] http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/laptops/disk-shock-protection.txt;h=0e6ba2663834a925123e97b788b028e8e576f1f4;hb=9c6102d446985bca9c426cb2d9b478ed21d2b024
[11] http://www.thinkwiki.org/wiki/HDAPS#Applications
[12] http://www.thinkwiki.org/wiki/HDAPS
[13] http://thread.gmane.org/gmane.linux.kernel/736531
[14] http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a68bbddba486020c9c74825ce90c4c1ec463e0e8
[15] http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f7d7b7a7a3db6526a84ea755c1c54a051e9a52de
[16] http://lwn.net/Articles/293658/
[17] http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c7c22e4d5c1fdebfac4dba76de7d0338c2b0d832
[18] http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=9246b5f06deeea541e7c62437c2ad19a0b1172c0
[19] http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=242f9dcb8ba6f68fcd217a119a7648a4f69290e9
[20] http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=581d4e28d9195aa8b2231383dbabc288988d615e
[21] http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=feb22b7f8e62b1b987a3a1dbad95af767a1df832
[22] http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8185d5aa93e0a5c111adc4952a5b87193a68ae5b
[23] http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=20df429dd6671804999493baf2952f82582869fa
[24] http://www.heise.de/glossar/entry/Kernel-Log-397909.html
[25] https://www.heise.de/meldung/Kernel-Log-neue-Catalyst-Treiber-2-6-27-1-beseitigt-Ursache-fuer-e1000e-Problem-211747.html
[26] https://www.heise.de/meldung/Kernel-Log-Dateisystem-Ext4-verlaesst-Entwicklungsphase-ein-Zwischenstopp-auf-dem-Weg-zu-btrfs-211446.html
[27] https://www.heise.de/ct/artikel/Linux-Kongress-2008-221606.html
[28] https://www.heise.de/meldung/Kernel-Log-Neue-Stable-Kernel-und-Nvidia-Treiber-2-6-27-wird-lange-gepflegt-211027.html
[29] https://www.heise.de/ct/artikel/Viel-bewegt-Die-Neuerungen-von-Linux-2-6-27-221594.html
[30] https://www.heise.de/meldung/Kernel-Log-e1000e-Problem-umschifft-Morton-lobt-Btrfs-209689.html
[31] https://www.heise.de/meldung/Kernel-Log-2-6-27-naehert-sich-Fertigstellung-Btrfs-bald-im-Kernel-208840.html
[32] https://www.heise.de/meldung/Fehlerhafter-Linux-Treiber-beschaedigt-Netzwerkkarte-Update-207465.html
[33] https://www.heise.de/meldung/Kernel-Log-Zweiter-Tag-des-Kernel-Summit-2008-Ubuntu-Kritik-bei-Eroeffnung-der-Linux-Plumbers-Conference-206649.html
[34] http://www.heise.de/glossar/entry/Kernel-Log-397909.html
[35] http://www.heise.de/open/news/archiv/
[36] http://www.heise.de/open/suche?sort=d;rm=search;q=Kernel-Log;channel=open
[37] http://www.heise.de/open/