KernelNewbies:

Linux 3.11 [https://lkml.org/lkml/2013/9/2/402 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.

TableOfContents()

1. Prominent features

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

O_TMPFILE is a new [http://linux.die.net/man/2/open open(2)]/[http://linux.die.net/man/2/openat 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 [http://linux.die.net/man/2/unlink 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, [http://linux.die.net/man/3/tmpfile 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: [http://git.kernel.org/linus/60545d0d4610b02e55f65d141c95b18ccf855b6e commit 1], [http://git.kernel.org/linus/e6bbef95429374fd3cac81c36b5894f55b2612dc 2], [http://git.kernel.org/linus/af51a2ac36d1f96bee30438ec95a51e4635d1e33 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: [http://git.kernel.org/linus/a9e61410921bcc1aa8f594ffa6301d5baba90f3b commit], [http://git.kernel.org/linus/6596afd48af4d07c8b454849b2fe7e628974f3ef commit 1], [http://git.kernel.org/linus/69e0b57a91adca2e3eb56ed4db39ab90f3ae1043 2], [http://git.kernel.org/linus/dc50ba7f9a6d9a920409892c7f30bce266067345 3], [http://git.kernel.org/linus/9d67006e6ebc6c5bc553d04b8c2dabea168e5e5b 4], [http://git.kernel.org/linus/4a6369e9935e392402d4ccb67f5cddac953e8d3c 5], [http://git.kernel.org/linus/66229b200598a3b66b839d1759ff3f5b17ac5639 6], [http://git.kernel.org/linus/d70229f704474b2932e03367a528773e336f6205 7], [http://git.kernel.org/linus/70d01a5ee29fcb23a6b5948227b1aee212922ade 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 [https://en.wikipedia.org/wiki/Lustre_(file_system) 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 http://lustre.org

Code: [http://git.kernel.org/linus/d7e09d0397e84eefbabfd9cb353221f3c6448d83 (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 [http://tools.ietf.org/html/draft-ietf-nfsv4-minorversion2-20 being currently developed]. For details in what features will bring this new version, [http://sniaesfblog.org/?p=245 see this post].

Code: [http://git.kernel.org/linus/4488cc96c581f130f3e86283d514123dce0dd46b commit], [http://git.kernel.org/linus/42c2c4249cd0192e29eec71e3e94d7bbc383c8de commit], [http://git.kernel.org/linus/4bdc33ed5bd9fbaa243bda6fdccb22674aed6305 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: [https://lwn.net/Articles/548936/ LSFMM 2013: NFS status]

Code: [http://git.kernel.org/linus/f58eda9bc2f0793da4c5c1098d55df2b31e0d682 commit], [http://git.kernel.org/linus/aa9c2669626ca7e5e5bab28e6caeb583fd40099b commit], [http://git.kernel.org/linus/e058f70b8070608fedfd3e39c2ead935beecb552 commit], [http://git.kernel.org/linus/eb9ae686507bc5a5ca78e6b3fbe629cd5cc67864 commit], [http://git.kernel.org/linus/18032ca062e621e15683cb61c066ef3dc5414a7b 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 [http://criu.org checkpoint-restore project], but it could be used to gain improved statistics and profiling.

For more details, see [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/Documentation/vm/soft-dirty.txt Documentation/vm/soft-dirty.txt]

Code: [http://git.kernel.org/linus/0f8975ec4db2c8b5bd111b211292ca9be0feb6b8 (commit)]

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

The ARM architecture has gained support for [https://wiki.debian.org/Hugepages 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 [http://kernelnewbies.org/Linux_2_6_38#head-f28790278bf537b4c4869456ad7b84425298708b transparent huge pages]; when enabled the kernel will try to map anonymous pages as 2MB sections where possible.

Code: [http://git.kernel.org/linus/0b19f93351dd68cb68a1a5b2d74e13d2ddfcfc64 commit], [http://git.kernel.org/linus/1355e2a6eb88f04d76125c057dc5fca64d4b6a9e commit], [http://git.kernel.org/linus/8d962507007357d6fbbcbdd1647faa389a9aed6d commit], [http://git.kernel.org/linus/084bd29810a5689e423d2f085255a3200a03a06e commit],[http://git.kernel.org/linus/af07484863e0c20796081e57093886c22dc16705 commit]

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

Code: [http://git.kernel.org/linus/6211753fdfd05af9e08f54c8d0ba3ee516034878 commit], [http://git.kernel.org/linus/aa42aa1389a54d1afb1c7606c5a37c3429cdf517 commit]

1.7. SYSV IPC message queue scalability improvements

This improvement continues the work that began in the SYSV IPC semaphore scaling that [http://kernelnewbies.org/Linux_3.10#head-5c725e42ba8f05ed7767cfaf1c8e8c6546c4caec 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: [http://git.kernel.org/linus/a5001a0d9768568de5d613c3b3a5b9c7721299da commit 1], [http://git.kernel.org/linus/2cafed30f150f7314f98717b372df8173516cae0 2], [http://git.kernel.org/linus/ac0ba20ea6f2201a1589d6dc26ad1a4f0f967bb8 3], [http://git.kernel.org/linus/15724ecb7e9bab35fc694c666ad563adba820cc3 4], [http://git.kernel.org/linus/41a0d523d0f626e9da0dc01de47f1b89058033cf 5], [http://git.kernel.org/linus/f269f40ad5aeee229ed70044926f44318abe41ef 6], [http://git.kernel.org/linus/f5c936c0f267ec58641451cf8b8d39b4c207ee4d 7], [http://git.kernel.org/linus/758a6ba39ef6df4cdc615e5edd7bd86eab81a5f7 8], [http://git.kernel.org/linus/d12e1e50e47e0900dbbf52237b7e171f4f15ea1e 9], [http://git.kernel.org/linus/1a82e9e1d0f1b45f47a97c9e2349020536ff8987 10], [http://git.kernel.org/linus/cf9d5d78d05bca96df7618dfc3a5ee4414dcae58 11], [http://git.kernel.org/linus/1ca7003ab41152d673d9e359632283d05294f3d6 12], [http://git.kernel.org/linus/dbfcd91f06f0e2d5564b2fd184e9c2a43675f9ab 13], [http://git.kernel.org/linus/9ad66ae65fc8d3e7e3344310fb0aa835910264fe 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 [https://en.wikipedia.org/wiki/New_API 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. For more details, see the recommended LWN article.

Recommended LWN article: [http://lwn.net/Articles/551284/ Low-latency Ethernet device polling]

Related paper: [http://www.linuxplumbersconf.org/2012/wp-content/uploads/2012/09/2012-lpc-Low-Latency-Sockets-slides-brandeburg.pdf A way towards Lower Latency and Jitter]

Code: [http://git.kernel.org/linus/060212928670593fb89243640bf05cf89560b023 commit 1], [http://git.kernel.org/linus/d30e383bb856f614ddb5bbbb5a7d3f86240e41ec 2], [http://git.kernel.org/linus/a5b50476f77a8fcc8055c955720d05a7c2d9c532 3], [http://git.kernel.org/linus/dafcc4380deec21d160c31411f33c8813f67f517 4]

1.9. Zswap: A compressed swap cache

Quoting from [https://lwn.net/Articles/537422/ 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: [https://lwn.net/Articles/537422/ The zswap compressed swap cache]

Code: [http://git.kernel.org/linus/4e2e2770b1529edc5849c86b29a6febe27e2f083 commit 1], [http://git.kernel.org/linus/61b0d76017a50c263c303fa263b295b04e0c68f6 2],[http://git.kernel.org/linus/2b2811178e85553405b86e3fe78357b9b95889ce 3]

2. Drivers and architectures

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

3. Core

4. Memory management

5. Block layer

6. File systems

XFS

ext4

Btrfs

F2FS

GFS2

CIFS

HPFS

FAT

NILFS2

7. Networking

8. Crypto

9. Virtualization

hv

10. Security

Smack

Apparmor

11. Tracing/perf

Tracing

perf

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


CategoryReleases

KernelNewbies: Linux_3.11 (last edited 2013-09-05 16:35:58 by diegocalleja)