Linux 3.3 has been released (official announcement) on 18 Mar 2012.
Summary: This release features as the most important change the merge of kernel code from the Android project. But there is more, it also includes support for a new architecture (TI C6X), much improved balancing and the ability to restripe between different RAID profiles in Btrfs, and several network improvements: a virtual switch implementation (Open vSwitch) designed for virtualization scenarios, a faster and more scalable alternative to the "bonding" driver, a configurable limit to the transmission queue of the network devices to fight bufferbloat, a network priority control group and per-cgroup TCP buffer limits. There are also many small features and new drivers and fixes are also available.
Contents
-
Prominent features in Linux 3.3
- Android merge
- Btrfs: restriping between different RAID levels, improved balancing, improved debugging tools
- Open vSwitch
- Better bonding of network interfaces: teaming
- Bufferbloat fighting: Byte queue limits
- Per-cgroup TCP buffer limits
- Network priority control group
- Better ext4 online resizing
- New architecture: TI C6X
- EFI boot support
- Driver and architecture-specific changes
- Various core changes
- Memory management
- File systems
- Networking
- Virtualization
- Crypto
- Security
- Tracing/profiling
1. Prominent features in Linux 3.3
1.1. Android merge
Recommended LWN article: Bringing Android closer to the mainline
The Android project uses the Linux kernel, but with some modifications and features built by themselves. For a long time, that code has not been merged back to the Linux repositories due to disagreement between developers from both projects. Fortunately, after several years the differences are being ironed out. Various Android subsystems and features have already been merged, and more will follow in the future. This will make things easier for everybody, including the Android mod community, or Linux distributions that want to support Android programs.
Code: (commit), (commit), (commit), (commit)
1.2. Btrfs: restriping between different RAID levels, improved balancing, improved debugging tools
Improved balancing, raid restripping
In Btrfs, a "balance" operation consists in a complete rewrite of the filesystem data, pushing all the rewritten data and metadata through the allocators. This operation is needed in some cases. For example if a new drive is added, a balance operation will be needed to redistribute data to the new drive. This balance operation, however, rebalanced the entire filesystem, which could take many hours, and it didn't support a change of raid profile.
The balancing implementation has been completely reworked. Btrfs can now pause and resume a balance operation, and give status updates. It is also possible to restripe between different raid levels. It also lets filter the balance based on metadata/data profiles, and lets balance only mostly empty block groups. The userspace utilities are available in the "parser" branch of the btrfs-progs.
Code: (commit 1 ,2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
Improved debugging
Btrfs has a new debugging utility, "integrity check", aimed at developers. The tool consist in a extra integrity test that for every write request checks that the filesystem is not writing to the disk bogus references that could left the file system in an inconsistent state that would cause data loss. This tool will help Btrfs developers to find bugs more easily.
1.3. Open vSwitch
Recommended LWN article: Routing Open vSwitch into the mainline
Open vSwitch is a software implementation of a multilayer network switch. This project has existed for years and it's now being merged in the main tree. Linux already has a virtual switch (the Linux bridge), but Open vSwitch is designed for more complex scenarios, and specially to be used as a vswitch in virtualized server environments (read the document "Why Open vSwitch?"
Open vSwitch supports standard management interfaces (e.g. sFlow, Netflow, RSPAN, CLI), and is open to programmatic extension and control using Openflow and the OVSDB management protocol, and it is designed to be compatible with modern switching chipsets. See openvswitch.org for more information and userspace utilities.
Code: (commit)
1.4. Better bonding of network interfaces: teaming
There is a new "teaming" network device, which is intended to be a fast, scalable, clean, userspace-driven replacement for the bonding driver. It allows to create virtual interfaces that teams together multiple Ethernet devices. This is typically used to increase the maximum bandwidth and provide redundancy. Currently round-robin and active-backup modes are implemented. The libteam userspace library with couple of demo apps is available at