• Immutable Page
  • Info
  • Attachments

Linux 2 6 34

Linux 2.6.34 has been released on 16 May, 2010.

Summary: This version adds two new filesystem, the distributed filesystem Ceph and LogFS, a filesystem for flash devices. Other features are a driver for almost-native KVM network performance, the VMware ballon driver, the "kprobes jump" optimization for dynamic probes, new perf features (the "perf lock" tool, cross-platform analysis support), support for GPU switching, several Btrfs improvements, RCU lockdep, Generalized TTL Security Mechanism (RFC 5082) and private VLAN proxy arp (RFC 3069) support, asynchronous suspend/resume, several new drivers and many other small improvements.

  1. Prominent features (the cool stuff)
    1. Ceph filesystem
    2. LogFS
    3. Vhost net: fast KVM networking
    4. Btrfs updates
    5. Kprobes jump optimization
    6. perf improvements, perf lock
    7. RCU lockdep
    8. Generalized TTL Security Mechanism and private VLAN proxy arp support
    9. Asynchronous suspend/resume
    10. GPU switching
    11. Preliminary Radeon Evergreen (Radeon HD 5xxx)
    12. VMware ballon driver
  2. Various core changes
  3. Filesystems
  4. Networking
  5. Cgroups
  6. Tracing/Profiling
  7. Crypto
  8. Virtualization
  9. Block
  10. Security
  11. Architecture-specific changes
  12. Drivers
    1. Graphics
    2. Storage
    3. Network
    4. Input
    5. USB
    6. Sound
    7. V4L/DVB
    8. Staging
    9. HWMON
    10. HID
    11. RTC
    12. Serial
    13. I2C
    14. Various
    15. MTD
    16. WATCHDOG
    17. Other news sources tracking the kernel changes

1. Prominent features (the cool stuff)

1.1. Ceph filesystem

Linux-mag article: Ceph: The Distributed File System Creature from the Object Lagoon

IBM Developerworks article: Ceph: A Linux petabyte-scale distributed file system

LWN article: The Ceph filesystem

Ceph is a distributed network filesystem. It is built from the ground up to seamlessly and gracefully scale from gigabytes to petabytes and beyond. Scalability is considered in terms of workload as well as total storage. Ceph is designed to handle workloads in which tens thousands of clients or more simultaneously access the same file, or write to the same directory–usage scenarios that bring typical enterprise storage systems to their knees.

Some of the key features that make Ceph different from existing file systems:

  • Seamless scaling: A Ceph filesystem can be seamlessly expanded by simply adding storage nodes (OSDs), and proactively migrates data onto new devices in order to maintain a balanced distribution of data.

  • Strong reliability and fast recovery: All data in Ceph is replicated across multiple OSDs. If any OSD fails, data is automatically re-replicated to other devices.

  • Adaptive MDS: The Ceph metadata server (MDS) is designed to dynamically adapt its behavior to the current workload. As the size and popularity of the file system hierarchy changes over time, that hierarchy is dynamically redistributed among available metadata servers in order to balance load and most effectively use server resources. Similarly, if thousands of clients suddenly access a single file or directory, that metadata is dynamically replicated across multiple servers to distribute the workload.

Project web site: ceph.newdream.net

Code: (code)

1.2. LogFS

Recommended LWN article: LogFS

LogFS is a filesystem designed for storage devices based on flash memory (SDD hard disks, USB sticks, etc). It is aimed to scale efficiently to large devices. In comparison to JFFS2, it offers significantly faster mount times and potentially less RAM usage. In its current state it is still experimental.

Project web site: www.logfs.org

Code: (commit)

1.3. Vhost net: fast KVM networking

vhost net is a kernel-level backend for virtio networking. The main motivation for vhost is to reduce virtualization overhead for virtio-net by moving the task of converting virtio descriptors to skbs and back from qemu userspace to the vhost net driver. For virtio-net this means removing up to 4 system calls per packet: vm exit for kick, reentry for kick, iothread wakeup for packet, interrupt injection for packet. This was shown to reduce latency by a factor of 5, and improve bandwidth to almost-native performance. Existing virtio net code is used in guests without modification.

Project web site: http://www.linux-kvm.org/page/VhostNet

Code: (commit)

1.4. Btrfs updates

  • In this version, Btrfs has the ability to change which subvolume or snapshot is mounted by default. For a while, Btrfs had a "mount -o subvol" option, which mounts into a subvolume instead of using the default root. The new ioctl allows you to set this once with "btrfs subvolume set-default" and have it used as the new default for every mount (without any mount options), until you change it again.

    This feature is part of snapshot assisted distro upgrades, where you can take a snapshot of your distro, update it to a beta version, and revert back the default root to the old tree if you want to go back to the old, stable version. Support for such functionality has already been added to the Yum package manager when the "yum-plugin-fs-snapshot" package is installed. This plugin takes snapshots and modifies the GRUB configuration files to show different boot options for each snapshot (note that recent versions of LVM also support changing which snapshot is the default root, so you also can use this feature in LVM/Ext4 systems)

    But the ioctl also sets an incompat bit on the super block because the developers ended up doing it differently than they had planned in the disk format. People would end up with a big surprise if they mounted with 2.6.33 and got one directory tree but mounted with 2.6.32 and got another, so an incompat bit is flip when the ioctl is run. The incompat bit is only set if you run the set-default ioctl. Code: (commit), (commit), (commit)

  • A new userspace utility has been created, it's a command called "btrfs". This tool replaces the old utilities.

  • A ioctl has been added to list all the subvolumes on the filesystem (command "btrfs subvolume list"). This makes use of a new interface that runs tree searches from userland, which will be used for incremental backups in later btrfs-progs releases. There's a userspace utility to list files recently modified (command "btrfs subvolume find-new") Ioctl code: (commit)

  • The math for df has been changed a little to better reflect space available for data, and factors in duplication for raid and single spindle dup. Also, a a space info ioctl has been added, which shows (command "btrfs filesystem df") how much space is tied up in metadata, and shows the raid level used for metadata/data. Code: (commit), (commit)

  • The defrag code has added the ability to compress a single file on demand and defrag only a range of bytes in the file. Code: (commit)

  • When snapshots are taken, Btrfs now waits for all the delayed allocation extents to hit the disk first.

1.5. Kprobes jump optimization

Recommended LWN article: Minimizing instrumentation impacts

Kprobes is an old feature (merged in 2004) that allows to gather information from any routine in the kernel at runtime. It is the internal system that Systemtap uses to insert probes at a random point of the kernel. The current system used to implement Kprobes (in x86) is a a breakpoint. At the instruction address, a "int 3" instruction is inserted, and when the code path hits it, the exception handler is called and kprobes recollects all the information needed.

This system works very well and it's quite efficient, but it can be improved. This version adds an experimental feature to improve it. In 2.6.34, a probe can use optionally in many (but not all, and no preempt support for now) places a simple jump, which is much faster. Usually, a kprobe hit takes 0.5 to 1.0 microseconds to process. On the other hand, a jump optimized probe hit takes less than 0.1 microseconds.

Code: (commit 1, 2, 3, 4, 5, 6, 7, 8)

1.6. perf improvements, perf lock

The perf tool and the tracing subsystem adds

  • perf lock: analyzes lock statistics Code: (commit)

  • Cross platform analysis support. The data recollected by perf can be analyzed in another system in a different architecture. A command has been added (command "perf archive") to archive in a .tar.bz2 file all the object files needed to do an analysis of a perf record, so an user can send it to someone who can interpret the data correctly. Code: (commit 1, 2, 3, 4, 5)

  • Add new "perf buildid-cache" command to manage build-id cache Code: (commit)

  • Python scripting engine, allow to process trace data with a Python script (commit), (commit), (commit)

1.7. RCU lockdep

Recommended LWN article: Lockdep-RCU

RCU is a scalable locking scheme used in many parts of the Linux tree. Its use is extending all over the tree, but its correct use needs manual checking. This version brings lockdep-style checking to rcu_dereference()

Code: (commit)

1.8. Generalized TTL Security Mechanism and private VLAN proxy arp support

Linux adds router denial-of-service prevention

This version adds support for Generalized TTL Security Mechanism (GTSM), RFC 5082. It is a lightweight security measure against forged packets causing DoS attacks using BGP packets (commit)

This version also adds support for private VLAN proxy arp support (RFC 3069) (commit)

1.9. Asynchronous suspend/resume

Recommended LWN article: Redesigning asynchronous suspend/resume

The power management code has been modified to allow asynchronous suspend/resume, allowing drivers to do device suspend/resume in parallel, which improves the time used to suspend/resume devices quite a lot. In this version, PCI, USB and SCSI devices do asynchronous suspend/resume by default.

Code: (commit 1, 2, 2, 3, 4, 5, 6

1.10. GPU switching

Some laptops have two GPUs, a low-power and inefficient GPU and a high-power and powerful GPU. Users should be able to switch to one or another at runtime. In this version, Linux adds support for this feature. You need to restart X, though.

Code: (commit)

1.11. Preliminary Radeon Evergreen (Radeon HD 5xxx)

This version adds preliminary support for Radeon Evergreen (Radeon HD 5xxx). It isn't ready for users (no acceleration at all), but it's progressing.

Code: (commit)

1.12. VMware ballon driver

This is a standalone version of VMware Balloon driver. Ballooning is a technique that allows hypervisor dynamically limit the amount of memory available to the guest (with guest cooperation). This driver will only activate if host is VMware.

Code: (commit)

2. Various core changes

  • vmscan: Factor out page reference checks (help workloads with large amounts of shortly used file mappings, like rtorrent hashing a file or git when dealing with loose objects) (commit)

  • Change anon_vma linking to fix multi-process server scalability issue (commit)

  • Count swap usage in /proc/PID/smaps (commit)

  • Add NOFOLLOW flag to umount(2) (commit)

  • ptrace: Add support for generic PTRACE_GETREGSET/PTRACE_SETREGSET (commit)

  • readahead: introduce FMODE_RANDOM for POSIX_FADV_RANDOM (commit)

  • PM: Add sysfs switch for disabling device run-time PM (commit)

  • PCI: support for PCI PME wake-up (commit), PCIe PME root port service driver (commit)

  • memory-hotplug: create /sys/firmware/memmap entry for new memory (commit)

  • elf coredump: add extended numbering support (commit)

  • failslab: add ability to filter slab caches (commit)

  • CPUFREQ: Processor Clocking Control interface driver (commit)

3. Filesystems

4. Networking

5. Cgroups

6. Tracing/Profiling

  • Add lazy line matching support (commit)

  • Use elfutils-libdw for analyzing debuginfo (commit)

  • Add multiple event support (commit)

  • Support tracepoint glob matching (commit)

  • Enable Nehalem-EX support (commit)

  • AMD event scheduling (commit)

  • Implement intel core solo/duo support (commit)

  • Implement Intel Westmere support (commit)

7. Crypto

  • gcm - Add RFC4543 wrapper for GCM (commit)

  • pcrypt - Add pcrypt crypto parallelization wrapper (commit)

8. Virtualization

9. Block

  • drbd: --dry-run option for drbdsetup net ( drbdadm -- --dry-run connect <res> ) (commit)

  • Added in stricter no merge semantics for I/O (improves performance a tiny bit) (commit)

  • cfq-iosched: rethink seeky detection for SSDs (commit), rework seeky detection (commit)

10. Security

  • SElinux: allow MLS->non-MLS and vice versa upon policy reload (commit)

  • TOMOYO: Add garbage collector. (commit)

11. Architecture-specific changes

12. Drivers

12.1. Graphics

  • i915

    • Add dynamic performance control support for Ironlake (commit)

    • Add initial bits for VGA modesetting bringup on Sandybridge. (commit)

    • Enable memory self refresh on 9xx (commit)

  • Nouveau

    • new userspace interface, needs new userspace driver (commit)

    • nv50: Implement ctxprog/state generation. (commit)

  • Radeon

    • Add asic hook for dma copy to r200 cards. (commit)

    • Add new RS880 pci id (commit)

    • Add support for hw i2c on r1xx-r5xx (commit)

    • Add support for square microtiles on r3xx-r5xx (commit)

    • r600/r700 command stream checker (commit)

    • Add dynamic engine reclocking (commit)

    • Enable ACPI powermanagement mode on radeon gpus. (commit)

  • agp/intel: Add support for Sandybridge. (commit)

  • vgaarb: Add user selectability of the number of GPUS in a system (commit)

  • viafb: support color depth 15 and 30 (commit)

12.2. Storage

  • SATA/PATA

    • pata_atiixp: enable parallel scan (commit)

    • pata_efar: Enable parallel scanning (commit)

    • pata_via: Add VIA VX900 support (commit)

    • ata_piix: IDE Mode SATA patch for Intel Cougar Point DeviceIDs (commit)

    • via82cxxx: add support for VT6415 PCIE PATA IDE Host Controller (commit), add support for vt8261 and future chips (commit)

    • ahci: AHCI and RAID mode SATA patch for Intel Cougar Point DeviceIDs (commit), implement SATA AHCI FIS-based switching support (commit)

  • SCSI

    • be2iscsi: Adding support for BE3 (commit)

    • hpsa: Allow multiple command completions per interrupt. (commit), add pci ids for storageworks 1210m, remove p400, p800, p700m (commit)

    • ipr: adds PCI ID definitions for new adapters (commit)

    • lpfc: Added management for LP21000 through BSG. (commit), SLI enhancements to support new hardware. (commit), restore MSI-X/MSI support (commit)

    • mpt2sas: Added raid transport support (commit)

    • qla2xxx: Add BSG support for FC ELS/CT passthrough and vendor commands. (commit), add firmware ETS burst support. (commit), enhance EEH support and enable AER support. (commit)

12.3. Network

  • Intel(R) 82599 Virtual Function Ethernet support (commit), 1, 2, 3, 4, 5)

  • Add cxgb4 driver for Chelsio T4-based gigabit and 10Gb Ethernet devices (commit), (commit), (commit), (commit), (commit), (commit)

  • qlcnic: Qlogic ethernet driver for CNA devices (commit)

  • Add Aeroflex Gaisler 10/100/1G Ethernet MAC driver (commit)

  • Add Micrel KSZ8841/2 PCI Ethernet driver (commit)

  • smsc75xx: SMSC LAN75xx USB gigabit ethernet adapter driver (commit)

  • ixgbe: Add SR-IOV support (commit 1, 2, 3, 4, 5, add support for the new ethtool n-tuple programming interface (commit)

  • mwl8k: basic AP interface support (commit), enable multi-BSS AP operation (commit), implement AP firmware station database maintenance (commit), add a pci-id (commit)

  • igb: Add support for 82576 ET2 Quad Port Server Adapter (commit), add support for device reset interrupt (commit), add support for wake-on-link (commit), support for VF configuration tools (commit)

  • sh_sir: Add SuperH IrDA driver (commit)

  • IGEPv2: Added WIFI support (commit)

  • wl1251: add U-APSD support (commit), implement WMM (commit), (commit)

  • wl1271: Add rudimentary ad-hoc support (commit), implement WMM (commit), implement chipset boot retry (commit), add testmode support (commit)

  • iwlwifi: add continuous uCode event log capability (commit)

  • rt73usb: add WLI-U2-H54HP (commit)

  • libertas: add Station and AdHoc mode support (commit), make mesh configurable (commit)

  • be2net: implements ethtool function to read eeprom data. (commit)

  • enic: feature add: add ethtool -c/C support (commit)

  • fs_enet: Add support for MPC512x to fs_enet driver (commit)

  • MCS7830 USB-Ether: add Rx error support (commit)

  • qlge: Add watchdog timer. (commit)

  • Delete isa-skeleton net driver (commit)

  • RDMA: cxgb3: Doorbell overflow avoidance and recovery (commit), nes: Add support for KR device id 0x0110 (commit)

  • ar9170usb: add Sphairon Homelink 1202 USB ID (commit)

  • ath9k: add support for 802.11n bonded out AR2427 (commit)

  • atl1c: Add support for Atheros AR8152 and AR8152 (commit)

  • can: add support for CAN interface cards based on the PLX90xx PCI bridge (commit), add support for the MPC512x processor (commit)

  • CAPI: Dynamically register minor devices (commit)

12.4. Input

  • Add driver for TWL4030 vibrator device (commit)

  • Add imx-keypad driver to support the IMX Keypad Port (commit)

  • usbtouchscreen: add NEXIO (or iNexio) support (commit)

  • Add support for ADP5587 devices (commit)

  • ads7846: add support for AD7843 parts (commit)

  • gamecon: add rumble support for N64 pads (commit)

  • Mac button emulation - implement as an input filter (commit)

  • Implement input filters (commit)

  • gpio-keys: add support for disabling gpios through sysfs (commit)

12.5. USB

  • Implement autosuspend (commit)

  • cdc_acm: Add support for pbLua console port (commit)

  • convert to the runtime PM framework (commit)

  • cp210x: Add 81E8 (Zephyr Bioharness) (commit)

  • ehci-fsl: Add power management support (commit)

  • gadget: introduce g_nokia gadget driver (commit)

  • musb: Add context save and restore support (commit)

  • MXC: Add i.MX21 specific USB host controller driver. (commit)

  • OHCI: DA8xx/OMAP-L1x glue layer (commit)

  • option: add Longcheer/Longsung vendor ID (commit)

  • pl2303: initial TIOCGSERIAL support (commit)

  • qcaux: driver for auxiliary serial ports on Qualcomm devices (commit)

  • serial: add support for serial port on the moschip 7715 (commit), add support for ViVOtech ViVOpay devices. (commit)

  • vstusb.c: removal of driver for Vernier Software & Technology, Inc., devices and spectrometers (commit)

  • Remove the berry_charge driver (commit)

  • Remove unsupported usb gadget drivers (commit)

12.6. Sound

  • HDA: Add ALC269VB support (commit),add ALC670 codec support (commit), add/fix ALC269 FSC and Quanta models (commit), add Macmini 3,1 support (commit), add support for IDT 92HD88 family codecs (commit), add support for Lenovo IdeaPad U150 (commit), add support for Medion WIM2160 (commit), add support for more the 8 streams (commit), add support for Toshiba Satellite M300 (commit), add support of ALC665 (commit), configure XO-1.5 microphones at capture time (commit), new Intel HDA controller (commit), support NVIDIA MCP89 and GT21x hdmi audio (commit), support OLPC XO-1.5 DC input (commit)

  • Add Edirol UA-101 support (commit)

  • virtuoso: add Xonar DS support (commit)

  • Add support for Macbook Air 2,1 internal speaker (commit)

  • USB MIDI support for Access Music VirusTI (commit)

  • jazz16: Add support for Media Vision Jazz16 chipset (commit)

  • ua101: add Edirol UA-1000 support (commit)

  • dt019x: merge into the als100 driver (commit)

  • ASoC

12.7. V4L/DVB

12.8. Staging

  • Add Broadcom Crystal HD driver (commit)

  • Add dt3155 driver (commit)

  • udlfb: add dynamic modeset support (commit), improved rendering performance (commit)

  • vme: add ca91cx42 dma support (commit), add ca91cx42 rmw support (commit), add location monitor support for ca91cx42 (commit), enable drivers to handle more than one bridge (commit), VMIVME-7805 board support (commit)

  • sm7xx: remove the buggy 2D acceleration support (commit)

  • Octeon Ethernet: Convert to NAPI. (commit)

  • p9auth: remove driver from tree (commit)

  • altpciechdma: remove driver (commit)

  • mimio: remove the mimio driver (commit)

  • remove the b3dfg driver (commit)

12.9. HWMON

  • Add driver for ADT7411 voltage and temperature sensor (commit)

  • Driver for Andigilog aSC7621 family monitoring chips (commit)

  • applesmc: Add iMac9,1 and MacBookPro2,2 support (commit)

  • it87: Add support for beep on alarm (commit), add support for old automatic fan speed control (commit)

  • lm90: Add SMBus alert support (commit), add support for the Winbond/Nuvoton W83L771AWG/ASG (commit)

  • w83793: Add watchdog functionality (commit)

  • Remove the deprecated adt7473 driver (commit)

12.10. HID

  • Add a device driver for the Apple Magic Mouse. (commit)

  • Add driver for the Logitech Flight System G940 (commit)

  • Add pressure support for the Stantum multitouch panel (commit)

  • Add RGT Clutch Wheel clutch device id (commit)

  • Add support for Acer T230H multitouch (commit)

  • Add support for Ortek WKB-2000 (commit)

  • Add support for Pixart Imaging Optical Touch Screen (commit)

  • Add support for Stantum multitouch panel (commit)

  • Enable Sixaxis controller over Bluetooth (commit)

  • Support for 3M multitouch panel (commit)

  • Support for MosArt multitouch panel (commit)

  • Use multi input quirk for TouchPack touchscreen (commit)

12.11. RTC

  • Add MPC5121 Real time clock driver (commit)

  • Enable rtc in max8925 (commit)

  • AM3517: Enable RTC driver support for AM3517EVM (commit)

12.12. Serial

12.13. I2C

  • Add SMBus alert support (commit)

  • Add support for Ux500/Nomadik I2C controller (commit)

  • Add support for Xilinx XPS IIC Bus Interface (commit)

  • i2c-i801: Add Intel Cougar Point device IDs (commit)

  • i2c-mpc: add support for the MPC512x processors from Freescale (commit)

  • i2c-parport: Add SMBus alert support (commit)

  • i2c-parport-light: Add SMBus alert support (commit)

12.14. Various

  • UIO: Add a driver for Hilscher netX-based fieldbus cards (commit)

  • UIO: Remove SMX Cryptengine driver (commit)

  • spi: Add Freescale/Motorola Coldfire QSPI driver (commit)

  • spi: Add SPI master driver for DaVinci/DA8xx (commit)

  • Regulator: Add max8925 support (commit), add voltage selection capability to mc13783 regulators v2 . (commit), add WM8994 regulator support (commit), enable max8649 regulator driver (commit)

  • pps: LinuxPPS clients support (commit), serial clients support (commit)

  • power_supply: bq27x00: add BQ27500 support (commit), enable power supply of max8925 (commit)

  • mfd: Add HTCPLD driver (commit)

  • mfd: Add initial WM8994 support (commit)

  • mfd: Add WM8994 register definitions (commit)

  • mfd: Initial max8925 support (commit)

  • mfd: Support 88pm8606 in 860x driver (commit)

  • Memory-mapped dw_spi driver (commit)

  • leds: Add Dell Business Class Netbook LED driver (commit)

  • hwrng: nomadik - Add hardware RNG driver (commit)

  • gpio: add driver for MAX7300 I2C GPIO extender (commit)

  • gpio: add Intel SCH GPIO controller driver (commit)

  • gpio: introduce it8761e_gpio driver for IT8761E Super I/O chip (commit)

  • gpiolib: Add support for WM8350 GPIO controller (commit)

  • dma: Add MPC512x DMA driver (commit)

  • eeepc-wmi: new driver for WMI based hotkeys on Eee PC laptops (commit)

  • edac: e752x: add dram scrubbing support (commit)

  • compal-laptop: Add support for known Compal made Dell laptops (commit)

  • backlight: Add Epson L4F00242T03 LCD driver (commit), enable max8925 backlight (commit)

12.15. MTD

  • Remove no longer used OMAP flash map (commit)

12.16. WATCHDOG

  • ep93xx: implemented watchdog timer driver for TS-72xx SBCs (commit)

12.17. Other news sources tracking the kernel changes

Tell others about this page:

last edited 2010-06-28 16:20:57 by diegocalleja