Kernel Log: What's new in 2.6.29 - Part 6: Storage, IDE/PATA, SCSI
With Linux Torvalds saying 2.6.29 could be available within a week or two, the Kernel Log continues its reporting about the new features scheduled for 2.6.29 with what's new in terms of storage drivers.
Spoilt for choice with IDE/PATA
This development cycle once again included many changes to the kernel's IDE subsystem, which mainly controls parallel ATA adapters (generally referred to as "IDE adapters", 1, 2, 3). Bartlomiej Zolnierkiewicz, who maintains this kernel area, ported a Libata driver for the CS5536 to the IDE subsystem and reintroduced the IT8172 driver for ITE's chip of the same name, which was removed in 2.6.18. Major changes were also made to several basic kernel features; see the commit links at the end of the article for more details.
These changes are unlikely to have any major effects on most users, as most current Linux distributions have predominantly used the Libata subsystem's drivers for parallel and serial ATA (SATA) adapters for quite some time. The Libata-based PATA drivers introduced with 2.6.19 are, therefore, by now likely to have undergone considerably better testing than their essentially older IDE counterparts, as the IDE subsystem has been subject to constant transformation over the past few months. How long the kernel developers intend to continue maintaining these two driver varieties is uncertain. Originally, the old IDE subsystem was expected to be removed once the Libata PATA drivers have been established; but now this doesn't seem likely any time soon.
Libata, SCSI and subsystems
The Libata developers haven't been idle themselves (1, 2). Alan Cox extended the Libata subsystem to include 32-bit PIO support; the sata-sil driver can now handle large block transfers. A new addition is the support for the VT6415 (PATA), VT8261 (SATA), and VX855 (PATA) VIA chips as well as that of a related chip with the PCI ID 0x0571.
As announced, the kernel hackers have removed the ide-scsi driver in the SCSI subsystem, because series 2.6 kernels and modern burn programs have long been able to access IDE CD/DVD burners without SCSI emulation. A new feature in the SCSI subsystem is Libfc, which was predominantly developed by Intel as part of the Open FCoE project â Libfc is a modular fibre channel library required for the support of Fibre Channel over Ethernet, another newly integrated technology. The new kernel will for the first time also include the cxgb3i iSCSI driver for Chelsio adapters with T3 chips.
The Sysfs pseudo file system can now be used to tell the underlying block layer for IDE, Libata and SCSI subsystems whether a device is a "rotating medium" if the kernel itself is unable to establish this. This allows other kernel subsystems and userspace programs to activate optimised access patterns for hard disks or SSDs and achieve maximum speeds for data read and write access. The Device Mapper (DM) now includes barrier support, allowing it to respond to requests by the file system to ensure that the data was actually written to the storage media in the DM pool, before moving on to the next task â this also benefits the integrity of journaling file systems (see also the related LWN article).
Even more changes
In addition to the changes we've already discussed, 2.6.29 also supports many other important new storage features for the Linux kernel:
Storage
DM, DMA, MD, UBI sowie Block-Layer inklusive IO-Scheduler
- async_tx, dmaengine: document channel allocation and api rework
- block: Add Kconfig help which notes that ext4 needs CONFIG_LBD
- block: add sysfs file for controlling io stats accounting
- block: add text file detailing queue/ sysfs files
- block: don't use plugging on SSD devices
- block: make barrier completion more robust
- block: Supress Buffer I/O errors when SCSI REQ_QUIET flag set
- cfq-iosched: remove limit of dispatch depth of max 4 times quantum
- dm: add name and uuid to sysfs
- dmaengine: add a release for dma class devices and dependent infrastructure
- dmaengine: remove 'bigref' infrastructure
- dmaengine: up-level reference counting to the module level
- dm: support barriers on simple devices
- Get rid of CONFIG_LSF
- nbd: tell the block layer that it is not a rotational device
- UBI: document UBI ioctls
- UBI: simplify PEB protection code
IDE
- ata: add CFA specific identify data words
- ide: add at91_ide driver
- ide: add port and host iterators
- ide: dynamic allocation of device structures
- ide: ide.c 'clear' fix, update "ide=nodma" documentation
- ide: update warm-plug HOWTO
- it821x: Add ultra_mask quirk for Vortex86SX
Libata
- ahci: Add the Device IDs for MCP89 and remove IDs of MCP7B to/from ahci.c
- ata_piix: save, use saved and restore IOCFG
- libata ahci: Add SATA GEN3 related messages
- libata ahci: Withdraw IGN_SERR_INTERNAL for SB800 SATA
- libata: beef up iterators
- libata: blacklist NCQ on OCZ CORE 2 SSD (resend)
- libata: New driver for OCTEON SOC Compact Flash interface (v7).
- libata: use WARN_ON_ONCE on hot paths
- pata_hpt366: reimplement mode programming
- pata_hpt3x3: Workarounds for chipset
- SATA AHCI: Blacklist system that spins off disks during ACPI power off
- SATA: Blacklisting of systems that spin off disks during ACPI power off
- sata_mv: fix 8-port timeouts on 508x/6081 chips
- sata_mv: Fix chip type for Hightpoint RocketRaid 1740/1742
- sata_mv: no longer experimental (v2)
- SATA PIIX: Blacklist system that spins off disks during ACPI power off
- SATA Sil: Blacklist system that spins off disks during ACPI power off
MMC
- mmc: Add 8-bit bus width support
- mmc: Add a MX2/MX3 specific SDHC driver
- mmci: Add support for ST Micro derivate
- mmc_spi: Add support for OpenFirmware bindings
- mmc: warn about voltage mismatches
- ricoh_mmc: Handle newer models of Ricoh controllers
- sdhci: activate led support also when module
- sdhci: handle built-in sdhci with modular leds class
- sdricoh_cs: Add support for Bay Controller devices
MDT
- MTD: add MTD tests to compilation
- MTD: LPDDR Command set driver
- MTD: LPDDR extended physmap driver to support LPDDR flash
- MTD: LPDDR Makefile and KConfig
- MTD: NAND ndfc driver
- MTD: physmap: make physmap compat explicit
- MTD: tests: add mtd_oobtest
- MTD update internal API to support 64-bit device size
SCSI
- SCSI: FC protocol definition header files
- SCSI: hptiop: Add new PCI device ID
- SCSI: lpfc 8.3.0 : Add BlockGuard support (T10-DIF) code
- SCSI: lpfc 8.3.0 : Add BlockGuard support (T10-DIF) structs and defs
- SCSI: lpfc 8.3.0 : Added 3 small features and improve PCI EEH support
- SCSI: lpfc 8.3.0 : Add support for Power Management Suspend/Resume operations
- SCSI: qla2xxx: Add ISP81XX support.
- SCSI: qla2xxx: add support for multi-queue adapter
- SCSI: qla2xxx: Code changes for qla data structure refactoring
- SCSI: qla2xxx: Refactor qla data structures
Further background and information about developments in the Linux kernel and its environment can also be found in previous issues of the kernel log at The H Open Source:
- Kernel Log: What's new in 2.6.29 - Part 5: Filesystems Btrfs, SquashFS, Ext4 without journaling
- Kernel Log: Morton questions acceptance of Xen Dom0 code; file systems for SSDs
- Kernel Log: Stable series development is speeding up, X Server 1.6 available soon
- Kernel Log: What's new in 2.6.29 - Part 4: ACPI, PCI, PM â notebooks and power saving improvements
- Kernel Log: New stable kernels, AMD 3D documentation and Mesa 7.3 released
- Kernel Log: What's new in 2.6.29 - Part 3: Kernel controlled graphics modes
- Kernel Log: main development phase for 2.6.29 ends, new X.org drivers
- Kernel Log: What's new in 2.6.29 - Part 2: WiMax
- Kernel Log: What's new in 2.6.29 - Part 1: Dodgy Wifi drivers and AP support
Older Kernel logs can be found in the archives or by using the search function at The H Open Source. (thl/c't)
(djwm)