KernelNewbies:

Linux 2.6.34 has been released.

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.

TableOfContents()

1. Prominent features (the cool stuff)

1.1. Ceph filesystem

Linux-mag article: [http://www.linux-mag.com/cache/7744/1.html Ceph: The Distributed File System Creature from the Object Lagoon]

IBM Developerworks article: [http://www.ibm.com/developerworks/linux/library/l-ceph/index.html?ca=dgr-lnxw01CEPHdth-LX Ceph: A Linux petabyte-scale distributed file system]

LWN article: [http://lwn.net/Articles/258516/ 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:

Project web site: [http://ceph.newdream.net/ ceph.newdream.net]

Code: [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=tree;f=fs/ceph;hb=HEAD (code)]

1.2. LogFS

Recommended LWN article: [http://lwn.net/Articles/234441/ 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: [http://logfs.org/ www.logfs.org]

Code: [http://git.kernel.org/linus/5db53f3e80dee2d9dff5e534f9e9fe1db17c9936 (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 http://www.linux-kvm.org/page/VhostNet]

Code: [http://git.kernel.org/linus/3a4d5c94e959359ece6d6b55045c3f046677f55c (commit)]

1.4. Btrfs updates

1.5. Kprobes jump optimization

Recommended LWN article: [http://lwn.net/Articles/365833/ Minimizing instrumentation impacts]

Kprobes is an old feature (merged [http://git.kernel.org/?p=linux/kernel/git/torvalds/old-2.6-bkcvs.git;a=commit;h=ad1fb0c375304479dcfc1555df85c883d3038094 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: [http://git.kernel.org/linus/d498f763950703c724c650db1d34a1c8679f9ca8 (commit 1], [http://git.kernel.org/linus/4610ee1d3638fa05ba8e87ccfa971db8e4033ae7 2], [http://git.kernel.org/linus/afd66255b9a48f5851326ddae50e2203fbf71dc9 3], [http://git.kernel.org/linus/b2be84df99ebc93599c69e931a3c4a5105abfabc 4], [http://git.kernel.org/linus/0f94eb634ef7af736dee5639aac1c2fe9635d089 5], [http://git.kernel.org/linus/f007ea2685692bafb386820144cf73a14016fc7c 6], [http://git.kernel.org/linus/c0f7ac3a9edde786bc129d37627953a8b8abefdf 7], [http://git.kernel.org/linus/b26486bf75148ab7b776c6a532a9bad33f987a38 8)]

1.6. perf improvements, perf lock

The perf tool and the tracing subsystem adds

1.7. RCU lockdep

Recommended LWN article: [http://lwn.net/Articles/371986/ 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: [http://git.kernel.org/linus/632ee200130899252508c478ad0e808222573fbc (commit)]

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

[http://lwn.net/Articles/379070/ 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 [http://git.kernel.org/linus/d218d11133d888f9745802146a50255a4781d37a (commit)]

This version also adds support for private VLAN proxy arp support (RFC 3069) [http://git.kernel.org/linus/65324144b50bc7022cc9b6ca8f4a536a957019e3 (commit)]

1.9. Asynchronous suspend/resume

Recommended LWN article: [http://lwn.net/Articles/366915/ 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: [http://git.kernel.org/linus/5af84b82701a96be4b033aaa51d86c72e2ded061 (commit 1], [http://git.kernel.org/linus/0e06b4a891c6a108412fe24b4500f499da2cf8a1 2], [http://git.kernel.org/linus/5a2eb8585f3b38e01e30aacaa8b985a1520a993d 2], [http://git.kernel.org/linus/97df8c12995c5bac73e3bfeea4c5be155c1f4401 3], [http://git.kernel.org/linus/a1e4d72cd3024999bfb6703092ea271438805c89 4], [http://git.kernel.org/linus/4cb077d93a57fb8bb64c277ec4ce637823cd76f4 5], [http://git.kernel.org/linus/927bc9165d3cd01054b472f9b25d91a8707209c8 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: [http://git.kernel.org/linus/6a9ee8af344e3bd7dbd61e67037096cdf7f83289 (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: [http://git.kernel.org/linus/bcc1c2a1d22974215e39dc87ce746ba9a39223e5 (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: [http://git.kernel.org/linus/453dc65931915abc61f92e12bba1fc4747ff5542 (commit)]

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

12.1. Graphics

12.2. Storage

12.3. Network

12.4. Input

12.5. USB

12.6. Sound

12.7. V4L/DVB

12.8. Staging

12.9. HWMON

12.10. HID

12.11. RTC

12.12. Serial

12.13. I2C

12.14. Various

12.15. MTD

12.16. WATCHDOG

12.17. Other news sources tracking the kernel changes

KernelNewbies: Linux_2_6_34 (last edited 2010-05-17 16:39:40 by NicolasKaiser)