Linux 3.11 was released on September 2, 2013

Summary: This release adds support for a new O_TMPFILE open(2) flag that allows easy creation of secure temporary files, experimental dynamic power management for all Radeon GPUs since r600, preliminary support for NFS 4.2 and SELinux Labeled NFS, experimental support for the Lustre distributed filesystem, detailed tracking of which pages a program writes, ARM huge page support and KVM/Xen support for ARM64, SYSV IPC message queue scalability improvements, a low latency network polling mechanism, a compressed swap cache, new drivers and many small improvements.

1. Prominent features

1.1. New O_TMPFILE open(2) flag to reduce temporary file vulnerabilities

O_TMPFILE is a new open(2)/openat(2) flag that makes easier the creation of secure temporary files. Files opened with the O_TMPFILE flag are created but they are not visible in the filesystem. And as soon as they are closed, they get deleted - just as a file you would have opened and unlinked.

There are two uses for these files. One is race-free temporary files (deleted when closed, never reachable from any directory, not subject to symlink attacks, not requiring to come up with unique names - basically, tmpfile(3) done right). Another use is for creating an initially unreachable file, write whatever you want into it, fchmod()/fchown()/fsetxattr() it as you wish, then atomically link it in, already fully set up.

Code: commit 1, 2, 3

1.2. AMD Radeon experimental dynamic power management support

Drivers for AMD graphic cards have got support for dynamic power management code for all their GPUs from r600 to present day. This code is experimental, and off by default for now. To enable this experimental code it's neccesary to pass the radeon.dpm=1 module parameter.

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

1.3. Experimental Lustre filesystem client support

Lustre is a parallel distributed file system. It can support multiple compute clusters with tens of thousands of client nodes, tens of petabytes (PB) of storage on hundreds of servers, and more than a terabyte per second (TB/s) of aggregate I/O throughput. It is the most popular cluster file system in high performance computing: six of the top 10 and more than 60 of the top 100 supercomputers in the world have Lustre file systems in them.

This release adds client support, but it's experimental, the code is not very clean and needs to live in drivers/staging for some time. See drivers/staging/lustre/TODO for details.

For more details about Lustre, visit

Code: (commit)

1.4. Preliminary support for NFS 4.2 and SELinux Labeled NFS

Client support for NFS 4.2

Linux 3.11 has gained preliminary client support for NFS 4.2, a new version of the NFS standard that is being currently developed. For details in what features will bring this new version, see this post.

Code: commit, commit, commit

Labeled NFS (SELinux for NFS)

Also, this kernel version has gained support for Labeled NFS, which adds full SELinux support to NFS. Until now, NFS mounts were treated with a single label, usually something like nfs_t; or at best allow an administrator to override the default with a label using the mount --context option. With Labeled NFS, there are lots of different labels supported on an NFS share. This can be useful to secure virtualization applications by setting the label on an image file on a NFS share. It is also useful to export home directories on a NFS share, then confine applications to only be allowed in certain places, instead of allowing to write any file on the NFS share.

Recommended LWN article: LSFMM 2013: NFS status

Code: commit, commit, commit, commit, commit

1.5. Detailed tracking of which pages a task writes

This release adds a mechanism that helps to track which pages a task writes to. This feature is used by the checkpoint-restore project, but it could be used to gain improved statistics and profiling.

For more details, see Documentation/vm/soft-dirty.txt

Code: (commit)

1.6. ARM huge page support, KVM and Xen support for ARM64

The ARM architecture has gained support for huge pages for both 32-bit and 64-bit CPUs. This implementation allows mapping of 2MB sections; the 64K pages configuration is not supported. It also adds support for transparent huge pages; when enabled the kernel will try to map anonymous pages as 2MB sections where possible.

Code: commit, commit, commit, commit,commit

This release also adds KVM and Xen virtualization support for the ARM64 architecture

Code: commit, commit

1.7. SYSV IPC message queue scalability improvements

This improvement continues the work that began in the SYSV IPC semaphore scaling that was merged in Linux 3.10.

Just like semaphores used to be, message queues also abuse the lock used by the SYSV IPC code, unnecessarily holding it for operations such as permission and security checks, which hurts performance and scalability. In this release, work is done to deal with the message queues (future releases will deal with shared memory). A mix of lockless code paths, shortened critical regions, per-semaphore statistics and cacheline assignments are implemented in the code to make it faster and more scalable.

Code: commit 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14

1.8. Low latency network polling

Modern Linux device drivers don't notify the system of new packet arrival with interrupts, because with the current network bandwidth requirements it would generate many thousands of interrupts per second, which can't be handled without severe performance degradation. For that reason, a periodic poll method (called NAPI in Linux) is used instead. However, the polling interval add latency. This release allows applications to request a per-socket low latency poll interval. Currently only ixgbe, mlx4, and bnx2x support this feature. For more details, see the recommended LWN article.

Recommended LWN article: Low-latency Ethernet device polling

Related paper: A way towards Lower Latency and Jitter

Code: commit 1, 2, 3, 4

1.9. Zswap: A compressed swap cache

Quoting from this recommended LWN article:

"Zswap is a lightweight, write-behind compressed cache for swap pages. It takes pages that are in the process of being swapped out and attempts to compress them into a dynamically allocated RAM-based memory pool. If this process is successful, the writeback to the swap device is deferred and, in many cases, avoided completely. This results in a significant I/O reduction and performance gains for systems that are swapping"

For more details and performance numbers, see this recommended LWN article: The zswap compressed swap cache

Code: commit 1, 2,3

2. Drivers and architectures

All the driver and architecture-specific changes can be found in the Linux_3.11-DriversArch page

3. Core

4. Memory management

5. Block layer

6. File systems










7. Networking

8. Crypto

9. Virtualization


10. Security



11. Tracing/perf



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


KernelNewbies: Linux_3.11 (last edited 2017-12-30 01:30:13 by localhost)