KernelNewbies:

Linux 3.6 has [https://lkml.org/lkml/2012/9/30/152 been released] on 30 Sep 2012

Summary: This Linux release includes new features in Btrfs: subvolume quotas, quota groups and snapshot diffs (aka "send/receive"). It also includes support for suspending to disk and memory at the same time, a TCP "Fast Open" mode, a "TCP small queues" feature to fight bufferbloat; support for safe swapping over NFS/NBD, better Ext4 quota support, support for the PCIe D3cold power state; and VFIO, which allows safe access from guest drivers to bare-metal host devices. Many small features and new drivers and fixes are also available.

TableOfContents()

1. Prominent features in Linux 3.6

1.1. Btrfs: subvolume quotas, quota groups, snapshot diff, cross-subvolume file clones

1.1.1. Subvolume quotas and quota groups

A size limit can be set for each subvolume. Once the subvolume reachs that limit, it won't be possible to write more data in it. This feature can be used as a substitute of quotas, assigning to each user home a subvolume and setting a size limit to it.

However, handling subvolumes quotas individually can be hard. Btrfs supports the concept of quota groups. It is possible to create a quota group and toss multiple subvolumes into that group: the quota limits will be automatically applied to all subvolumes in the group. The command used for this feature is btrfs qgroup create/destroy assign/remove show/limit

[http://git.kernel.org/linus/630dc772ea51bca3ec6fac609f450cbe0cafd1d6 (commit 1], [http://git.kernel.org/linus/7069830a9e381e33d44ded45095f764844c71d24 2], [http://git.kernel.org/linus/e679376911d016b670c8cfc1645c178f77e8d1d3 3], [http://git.kernel.org/linus/6f72c7e20dbaea55f04546de69586c84a3654503 4], [http://git.kernel.org/linus/5d13a37bd5327220e13329943d1228acfbe5934a 5], [http://git.kernel.org/linus/20897f5c86b9d2b77baea1d48eda7fa4ac217279 6], [http://git.kernel.org/linus/edf39272db4810282360f7362d43ade1d524c913 7], [http://git.kernel.org/linus/546adb0d817c34dc2be3a7cb5bba8771f837a562 8], [http://git.kernel.org/linus/c556723794b3487a79de1ecd6354975b1389f5ff 9], [http://git.kernel.org/linus/bed92eae26ccf280d1a2168b7509447b56675a27 10], [http://git.kernel.org/linus/416ac51da90e98daaac17e1f359a6c5591f7f5bd 11], [http://git.kernel.org/linus/bcef60f249034f69e89e544461cbfecb68975595 12)]

1.1.2. Snapshot diffs, aka "send/receive"

Btrfs can compute the differences between two snapshots and store the differences into a file. This file can be replayed later to reconstruct the sent subvolumes/snapshots. The main, but not only, usage for send/receive is backups.

Code: [http://git.kernel.org/linus/31db9f7c23fbf7e95026143f79645de6507b583b (commit)]

1.1.3. Cross-subvolume file clones

The Btrfs copy-on-write design allows to have many files sharing the same underlying data. This allows to copy (using cp --reflink) files or directories without duplicating the space usage. This had a limitation, though: it was not possible to clone across different subvolumes. This restriction has been removed (it is still not possible to clone files when they cross vfsmounts, ie. two subvolumes from one filesystem mounted separately)

Code: [http://git.kernel.org/linus/362a20c5e27614739c46707d1c5f55c214d164ce (commit)]

1.2. Suspend to disk and memory at the same time

In portable devices it is useful to write a hibernation image to disk, and then suspend. If the battery runs out or power is otherwise lost, the computer will power off, but it will be resumed from the hibernated image. If not, it will resume normally from memory suspend, and hibernation image will be discarded.

If you would like to write hibernation image to swap and then suspend to RAM, you can try "echo suspend > /sys/power/disk; echo disk > /sys/power/state"

Code: [http://git.kernel.org/linus/62c552ccc3eda1198632a4f344aa32623d226bab (commit)]

1.3. Support for SMBv2 protocol

The cifs networking filesystem has added support for the [http://en.wikipedia.org/wiki/Server_Message_Block#SMB2 version 2 of the SMB protocol]. The SMB2 protocol is the successor to the popular CIFS and SMB network file sharing protocols, and is the native file sharing mechanism for Windows OSs since it was introduced in Windows Vista in 2006. SMB2 enablement will eventually allow users better performance, security and features, than would not be possible with previous protocols.

Code: [http://git.kernel.org/linus/5478f9ba9a34d660eb3227dcd16314689c51f946 (commit)]

1.4. TCP Fast Open (client side)

"Fast Open" is a optimization to the process of stablishing a TCP connection that allows the elimination of one round time trip (RTT) from certain kinds of TCP conversations. Fast Open could result in speed improvements of between 4% and 41% in the page load times on popular web sites. In this version only the client-side has been merged.

Recommended LWN article: [https://lwn.net/Articles/508865/ TCP Fast Open: expediting web services]

Code: [http://git.kernel.org/linus/2100c8d2d9db23c0a09901a782bb4e3b21bee298 (commit 1], [http://git.kernel.org/linus/1fe4c481ba637660793217769695c146a037bd54 2], [http://git.kernel.org/linus/67da22d23fa6f3324e03bcd0580b914b2e4afbf3 3], [http://git.kernel.org/linus/aab4874355679c70f93993cf3b3fd74643b9ac33 4], [http://git.kernel.org/linus/8e4178c1c7b52f7c99f5fd22ef7af6b2bff409e3 5], [http://git.kernel.org/linus/783237e8daf13481ee234997cbbbb823872ac388 6], [http://git.kernel.org/linus/cf60af03ca4e71134206809ea892e49b92a88896 7)]

1.5. Bufferbloat fight: TCP small queues

TCP small queues is another mechanism designed to fight bufferbloat. TCP Small Queues goal is to reduce number of TCP packets in xmit queues (qdisc & device queues), to reduce RTT and cwnd bias, part of the bufferbloat problem. Without reduction of nominal bandwidth, we have reduction of buffering per bulk sender : < 1ms on Gbit (instead of 50ms with TSO) and < 8ms on 100Mbit (instead of 132 ms).

Recommended LWN article: [https://lwn.net/Articles/507065/ TCP small queues]

Code: [http://git.kernel.org/linus/46d3ceabd8d98ed0ad10f20c595ca784e34786c5 (commit)]

1.6. Safe swap over NFS/NBD

The Linux Terminal Server Project recommends the use of the Network Block Device (NBD) for swap according [https://sourceforge.net/projects/ltsp/files/Docs-Admin-Guide/LTSPManual.pdf/download to the manual]. There is also documentation and tutorials on how to setup swap over NBD at [https://help.ubuntu.com/community/UbuntuLTSP/EnableNBDSWAP some places]. The nbd-client also documents the use of NBD as swap. Despite this, a machine using NBD for swap could deadlock within minutes if swap was used intensively. This release allows safe swapping over NBD and also adds support for swapping over NFS.

Recommended LWN article: [https://lwn.net/Articles/439298/ Safely swapping over the net]

Code: [http://git.kernel.org/linus/072bb0aa5e062902968c5c1007bba332c7820cf4 (commit 1], [http://git.kernel.org/linus/a564b8f0398636ba30b07c0eaebdef7ff7837249 2)]

1.7. ext4: better quota support

ext4 has added support for quotas as a first class feature in ext4; which is to say, instead of as separate files visible in the file system directory hierarchy, the quota files are stored in hidden inodes as file system metadata, and will be managed directly by e2fsprogs, and quota will be enabled automatically as soon as the file system is mounted. The repquota program will not function initially, until a new QUOTASCAN_OPEN interface is implemented. More details at https://ext4.wiki.kernel.org/index.php/Design_For_1st_Class_Quota_in_Ext4

Code: [http://git.kernel.org/linus/7c319d328505b7781b65238ae9f53293b5ee0ca8 (commit)]

1.8. PCIe D3cold power state support

This release adds PCI Express runtime D3cold power state support. D3cold is the deepest power saving state for a PCIe device, where its main power is removed.

Code: [http://git.kernel.org/linus/448bd857d48e69b33ef323739dc6d8ca20d4cda7 (commit 1], [http://git.kernel.org/linus/71a83bd727cc31c5fe960c3758cb396267ff710e 2], [http://git.kernel.org/linus/4f9c1397e2e80e52b17ec4e39760caa807bd15c7 3)]

1.9. VFIO: bare-metal safe access to devices from userspace drivers

The VFIO driver is an IOMMU/device agnostic framework for exposing direct device access to userspace, in a secure, IOMMU protected environment. In other words, this allows safe, non-privileged, userspace drivers. Why does Linux wants that? Virtual machines often make use of direct device access ("device assignment") when configured for the highest possible I/O performance. From a device and host perspective, this simply turns the VM into a userspace driver, with the benefits of significantly reduced latency, higher bandwidth, and direct use of bare-metal device drivers. Some applications, particularly in the high performance computing field, also benefit from low-overhead, direct device access from userspace. Examples include network adapters (often non-TCP/IP based) and compute accelerators.

Code: [http://git.kernel.org/linus/89e1f7d4c66d85f42c3d52ea3866eb10cadf6153 (commit 1], [http://git.kernel.org/linus/4a5b2a20ec87384eeb19e70991e7e15a00cad87b 2], [http://git.kernel.org/linus/73fa0d10d077d9521ee2dace2307ae2c9a965336 3], [http://git.kernel.org/linus/cba3345cc494ad286ca8823f44b2c16cae496679 4)]

2. Driver and architecture-specific changes

All the driver and architecture-specific changes can be found in the [http://kernelnewbies.org/Linux_3.6_DriverArch Linux_3.6_DriverArch page]

3. Various core changes

4. Memory Management

5. Block

6. Perf/tracing

7. Virtualization

8. Security

9. Networking

10. Cryptography

11. File systems

12. Other news sites that track the changes of this release


KernelNewbies: Linux_3.6 (last edited 2012-10-01 14:28:34 by Morot)