Kernel-Log – Was 2.6.30 bringt (3): RAID-Verbesserungen, optimierter CFQ-Scheduler, SAS-Treiber
Die nächste Kernel-Version soll alles Nötige mitbringen, um etwa ein RAID 5 in ein RAID 6 und zurück zu verwandeln. Änderungen am Block Layer sollen die Geschwindigkeit steigern und neue und überarbeitete Treiber verbessern die SAS-Unterstützung.
- Thorsten Leemhuis
Mit der vor einigen Tagen erfolgten Freigabe der fünften Vorabversion von Linux 2.6.30 schreitet die Entwicklung der nächsten Kernel-Version der Hauptentwicklungslinie weiter voran. Wie Torvalds in der Freigabe-Mail andeutet, nehmen Zahl und Umfang der Änderungen langsam ab, wie es an diesem Punkt der Entwicklung üblich ist.
Da es in jedem Entwicklungszyklus zumeist acht oder neun der häufig im Wochentakt erscheinenden Vorabversion gibt, wird es sicher noch einige Wochen dauern, bis Torvalds Linux 2.6.30 veröffentlicht. Nichtsdestotrotz will das Kernel-Log die Berichterstattung über die größten Änderungen von Linux 2.6.30 mit der folgenden Übersicht über die Neuerungen rund um die Storage-Infrastruktur und -Treiber fortsetzen.
Flexible Verbundarbeit
Im Code für Software-RAID mit MD (Multiple Device) gab es allerlei Änderungen (siehe Liste am Ende des Artikels), durch die sich nun die Zahl der Datenträger in einem RAID 5 auch verringern lässt. Dadurch kann sich ein RAID-5-Verbund nun in ein RAID 6 und wieder zurück verwandeln lassen; zudem kann der Kernel ein RAID 1 in ein RAID 5 umbauen. Das Userland-Werkzeug mdadm beherrscht diese tief greifenden Umbauarbeiten in der derzeit aktuellen Version allerdings nicht.
Der MD-Code bietet nun auch Unterstützung für den bei 2.6.27 aufgenommenen "Data integrity support", sofern alle Datenträger eines MD-Verbunds und deren Controller das können. Das gleiche gilt durch einige Änderungen auch für den Device Mapper (DM), der Barriers besser als zuvor unterstützt (1, 2).
Am Block Layer und den zugehörigen I/O-Scheduler CFQ gab es zahlreiche Änderungen, nachdem die Kernel-Entwickler bei Tests im Rahmen der länglichen Diskussionen rund um Ext3 und Ext4 einige Performance-Probleme in diesem Bereich gefunden hatten – diese waren teilweise so groß, dass Torvalds drohte, einen anderen I/O-Scheduler zum Standard zu erheben. Die Ursachen konnten aber gefunden und beseitigt werden, was sich in Einzelfällen wohl in einem nicht nur messbaren, sondern auch spürbaren Geschwindigkeitszuwachs niederschlagen kann (siehe auch LWN.net-Artikel "Solving the ext3 latency problem").
Unterbau
Wie bereits in zweiten Teil der Kernel-Log-Mini-Serie "Was 2.6.30 bringt" erwähnt, bietet das SCSI-Subsystem nun Unterstützung für die eher exotischen OSDs (Object-Based Storage Devices) (u. a. 1, 2, Dokumentation). Erstmals beim Kernel dabei ist der SCSI-Treiber mpt2sas für die SAS-2.0-Controller SAS2004, SAS2008, SAS2108 und SAS2116 von LSI. Der Treiber stex unterstützt nun ebenfalls einige SAS-6G-Controller von Promise. Die bei 2.6.29 neue Unterstützung für Fibre Channel over Ethernet beherrscht nun auch FIP (FCoE Initialization Protocol) zum Finden und Einbinden von Fibre-Channel Forwarders (FCFs). Nachdem die Kernel-Entwickler bereits bei 2.6.27, .28 und .29 den Firmware-Code zahlreicher SCSI-Treiber in separate Dateien auslagerten, wurden für 2.6.30 nochmal einige weitere Treiber dieser Spaltung unterzogen.
Bartlomiej Zolnierkiewicz hatte vor einigen Wochen angekündigt, alle von ihm geplanten Umbauarbeiten am alten IDE-Subsystem abgeschlossen zu haben und sich fortan im Wesentlichen auf die Pflege und kleinere Erweiterungen zu konzentrieren. Das zeigte sich bereits bei der Entwicklung von 2.6.30, denn nach den teils umfangreichen Änderungen am IDE-Code der vorangegangenen Kernel-Versionen ging es diesmal deutlich ruhiger zu. Auch im Libata-Subsystem, dessen PATA-Treiber bei den meisten Mainstream-Distributionen bevorzugt für IDE-Adapter eingesetzt werden, gab es verhältnismäßig wenig bedeutsame Änderungen – etwa die Unterstützung für ATAPI-Geräte im für Marvell-ATA-Chips zuständigen Treiber sata_mv.
Die kleineren Perlen
Die Kernel-Entwickler diskutierten auch über Erweiterungen zur Nutzung von ATA-TRIM, mit dessen Hilfe der Kernel SSDs mit Unterstützung für das noch recht junge ATA-Kommando mitteilen soll, welche Bereiche nicht mehr durch Daten belegt sind ("Discard"). Aufgenommen wurden aber lediglich Patch, der die Grundlagen für weitere, vermutlich mit 2.6.31 kommende Änderungen legt.
Bei den bisher genannten Neuerungen handelt es sich nur um die bedeutsamsten Änderungen, die die Kernel-Hacker jüngst am für die Storage-Unterstützung zuständigen Code von Linux vorgenommen haben. Zahlreiche weitere Änderungen finden sich in der folgenden Liste mit den Überschriften des jeweiligen Commits im Hauptentwicklungszweigs; über die Links gelangt man direkt zur Änderungen in einem Webfrontend, wo der Commit-Kommentar und der Patch selbst weitere Informationen zu diesen vielleicht etwas weniger wichtigen, aber keineswegs unbedeutenden Änderungen vermitteln.
Kernel-Log – Was 2.6.30 bringt
Weitere Teile aus der Kernel-Log-Mini-Serie "Was 2.6.30 bringt":
1. Netzwerk – Neue Treiber für LAN und WLAN
2. Dateisysteme – Zwei neue und massig Änderungen rund um Ext3 und Ext4
Der Artikel "Stetes Wachstum – Die Neuerungen von Linux 2.6.29" bietet eine Übersicht über die Neuerungen der bei der Artikel-Veröffentlichung aktuellen Kernel-Version der Hauptentwicklungslinie.
Weitere Geschehnisse rund um den Linux-Kernel und andere Hardware-nahe Linux-Software finden in den regulären Kernel-Logs Erwähnung, welche die die Kernel-Log-Übersichtsseite auf heise open listet.
Block Layer
- as-iosched: get rid of private REQ_SYNC/REQ_ASYNC defines
- block: Add flag for telling the IO schedulers NOT to anticipate more IO
- block: update biodoc.txt on plugging
- brd: support barriers
- cfq-iosched: add close cooperator code
- cfq-iosched: change dispatch logic to deal with single requests at the time
- cfq-iosched: don't delay queue kick for a merged request
- cfq-iosched: don't let idling interfere with plugging
- cfq-iosched: tweak kick logic a bit more
- Document and move the various READ/WRITE types
- loop: add ioctl to resize a loop device
- loop: support barrier writes
Device Mapper (DM)
IDE
Libata
- ahci: force CAP_NCQ for earlier NV MCPs
- ata_piix: ICH7 does not support correct MWDMA timings
- ata: Report 16/32bit PIO as best we can
- libata: ahci enclosure management bios workaround
- pata_hpt37x: fix HPT370 DMA timeouts
- sata_mv: introduce support for ATAPI devices
Mapper Device (DM)
- Documentation/md.txt update
- md: add explicit method to signal the end of a reshape.
- md: add ->takeover method for raid5 to be able to take over raid1
- md: add ->takeover method to support changing the personality managing an array
- md: add takeover support for converting raid6 back into raid5
- md: add takeover support for raid4 -> raid5 conversion.
- md: allow number of drives in raid5 to be reduced
- md: enable suspend/resume of md devices.
- md: occasionally checkpoint drive recovery to reduce duplicate effort after a crash
- md/raid5: Add support for new layouts for raid5 and raid6.
- md/raid5: allow layout and chunksize to be changed on active array.
- md/raid5: allow layout/chunksize to be changed on an active 2-drive raid5.
- md/raid5: finish support for DDF/raid6
- md/raid6: move raid6 data processing to raid6_pq.ko
- md: remove CONFIG_MD_RAID_RESHAPE config option.
- md: support bitmaps on RAID10 arrays larger then 2 terabytes
MMC
- mmc: add MODALIAS linkage for MMC/SD devices
- mmc: SDIO driver for Marvell SoCs
- sdhci: Add support for bus-specific IO memory accessors
- sdhci: Add support for card-detection polling
MTD
- MTD-CHIPS: Add JEDEC probe support for the SST 39VF3201 flash chip
- MTD-NAND: Add parent info for CAFÉ controller
- MTD-NAND: Add support for 4KiB pages.
- MTD-NAND: Add support for NAND on the Socrates board
- MTD-NAND: davinci_nand driver
- MTD-NAND: FSL-UPM: add multi chip support
- MTD-NAND: FSL-UPM: Add wait flags to support board/chip specific delays
- MTD-NAND: pxa3xx_nand: add ability to keep controller settings defined by OBM/bootloader
- MTD-NAND: TXx9: add NDFMC support
- MTD-NOR: Add device parent info to physmap_of
- MTD-OneNAND: Add write-while-program support
- MTD: RBTX4939: add MTD support
- MTD: RBTX4939 map driver
- MTD: TXx9 SoC NAND Flash Memory Controller driver
- NOMMU: Make it possible for RomFS to use MTD devices directly
SCSI
- SCSI: 3w-9xxx: add power management support
- SCSI: aacraid driver update
- SCSI: advansys: use request_firmware
- SCSI: fcoe, libfc: add libfcoe module
- SCSI: libosd: attributes Support
- SCSI: libosd: SCSI/OSD Sense decoding support
- SCSI: major.h: char-major number for OSD device driver
- SCSI: mpt2sas : Identify Dell series-7 adapters at driver load time
- SCSI: osd: Kconfig file for in-tree builds
- SCSI: osd_uld: OSD scsi ULD
- SCSI: qla1280: use request_firmware
- SCSI: qla2xxx: Add Flash-Access-Control support for recent ISPs.
- SCSI: qla2xxx: Add reset capabilities for application support.
- SCSI: qlogicpti: use request_firmware
- SCSI: scsi: Add osd library to build system
- SCSI: stex: add MSI support
- SCSI: stex: Add new device id
Various
Weitere Hintergründe und Informationen rund um Entwicklungen im Linux-Kernel und dessen Umfeld finden sich in vorangegangen Ausgaben des Kernel-Logs auf heise open. (thl/c't) (thl)