Linux 4.11 [ has been released] on Sun, 30 Apr 2017.

Summary: This release adds support for pluggable IO schedulers framework in the multiqueue block layer, journalling support in the MD RAID5 implementation that closes the write hole, a more scalable swapping implementation for swap placed in SSDs, a new statx() system call that solves the deficiencies of the existing stat(), a new perf ftrace tool that acts as a frontend for the ftrace interface, support for drives that implement the [ OPAL Storage Specification], support for the Shared Memory Communications-RDMA protocol as defined in [ RFC7609], persistent scrollback buffers for all VGA consoles, and many new drivers and other improvements.


1. Prominent features

1.1. Pluggable IO schedulers framework in the multiqueue block layer

The Linux block layer is know to have different IO schedulers (deadline, cfq, noop, etc) with different performance characteristics each one, and users are allowed to switch between them on the fly. In Linux 3.13, the block layer [ added a new multiqueue design] that performs better with modern hardware (eg. SSD, NVM). However, this new multiqueue design didn't include support for pluggable IO schedulers.

This release solves that problem with the merge of a multiqueue-ready IO scheduling framework. A port of the deadline scheduler has also been added (more IO schedulers will be added in the future)

Code: [ merge], [ commit]

1.2. Scalable swapping for SSDs

Modern storage devices such as SSDs are making the usage of swapping attractive not just as a way to deal with excessive memory load, but also as a performance enhancement technique. Cloud providers, for example, can overcommit memory more aggressively and fit more VMs to a platform with a fast swap device. However, the swapping implementation was designed for traditional rotating hard disks, where the performance and latency of the swap did not matter as much as it does with modern storage. This release makes the swap implementation more scalable, making it more suitable for use with modern storage devices.

Recommended LWN article: [ Making swapping scalable]

Code: [ commit], [ commit], [ commit], [ commit], [ commit], [ commit], [ commit], [ commit], [ commit]

1.3. Journaled RAID5 to close the write hole

Based in work [ started] in Linux 4.4, this release adds journalling support to RAID4/5/6 in the MD layer (not to be confused with btrfs RAID). With a journal device configured (typically NVRAM or SSD), the "[ RAID5 write hole]" is closed - a crash during degraded operations cannot result in data corruption.

Recommended LWN article: [ A journal for MD/RAID5]

Blog entry: [ Improving software RAID with a write-ahead log]

Code: [ commit]

1.4. statx(2), a modern stat(2) alternative

Due to several shortcomings in the stat(2) system call (like not being y2038 ready or not playing well with networking filesystems), a new system call has been worked through the years, with the final result being statx(2), a new system call that has been added in this release.

Recommended LWN article: [ statx() v3]

Code: [ commit]

1.5. New perf ftrace tool

A new tool has been added to the perf toolkit: perf ftrace. This tool intends to be a simple perf front-end for the already existing [ ftrace] interface. In this release, it only supports two tracers, function_graph or function (default tracer is function_graph, it can be configured in the ftrace.tracer config key). Only single thread tracing and the tool just reads trace_pipe in text and then write it to stdout. More features are expected in future releases.

Code: [ commit], [ commit], [ commit]

1.6. Support for OPAL drives

The [ Opal Storage Specification] is a set of specifications for features of data storage devices (such as disk drives) that enhance their security. For example, it defines a way of encrypting the stored data so that an unauthorized person who gains possession of the device cannot see the data. That is, it is a specification for self-encrypting drives.

This release adds Linux support for Opal nvme enabled controllers. It enables users to setup/unlock/lock locking ranges for SED devices using the Opal protocol.

Code: [ commit], [ commit]

1.7. Support for the SMC-R protocol (RFC7609)

This release includes the initial part of the implementation of the "Shared Memory Communications-RDMA" (SMC-R) protocol as defined in [ RFC7609]. SMC-R is an IBM protocol that provides RDMA capabilities over RoCE transparently for applications exploiting TCP sockets. While SMC-R does not aim to replace TCP, it taps a wealth of existing data center TCP socket applications to become more efficient without the need for rewriting them. A new socket protocol family PF_SMC is introduced. There are no changes required to applications using the sockets API for TCP stream sockets other than the specification of the new socket family AF_SMC. Unmodified applications can be used by means of a dynamic preload shared library.

SMC-R uses RDMA over Converged Ethernet (RoCE) to save CPU consumption. SMC-R inherits TCP qualities such as reliable connections, host-based firewall packet filtering (on connection establishment) and unmodified application of communication encryption such as TLS (transport layer security) or SSL (secure sockets layer). Since original TCP is used to establish SMC-R connections, load balancers and packet inspection based on TCP/IP connection establishment continue to work for SMC-R.

RFC: [ RFC7609]

Code: [ merge]

1.8. Persistent scrollback buffers for all VGA consoles

Not an important feature, specially for tmux/screen users, but probably annoying for many others: this release adds optional support for scrollback history not being flushed when switching between consoles (this breaks tools like clear_console that rely on flushing the scrollback history by switching back and forth between consoles which is why this feature is disabled by default. Use the escape sequence \e[3J instead for flushing the buffer)

Code: [ commit], [ commit]

2. Core (various)

3. File systems

4. Memory management

5. Block layer

6. Tracing and perf tool

7. Virtualization

8. Cryptography

9. Security

10. Networking

11. Architectures

12. Drivers

12.1. Graphics

12.2. Storage

12.3. Drivers in the Staging area

12.4. Networking

12.5. Audio

12.6. Tablets, touch screens, keyboards, mouses

12.7. TV tuners, webcams, video capturers

12.8. Universal Serial Bus

12.9. Serial Peripheral Interface (SPI)

12.10. Watchdog

12.11. ACPI, EFI, cpufreq, thermal, Power Management

12.12. Real Time Clock (RTC)

12.13. Voltage, current regulators, power capping, power supply

12.14. Pin Controllers (pinctrl)

12.15. Multi Media Card (MMC)

12.16. Memory Technology Devices (MTD)

12.17. Industrial I/O (iio)

12.18. Multi Function Devices (MFD)

12.19. Pulse-Width Modulation (PWM)

12.20. Inter-Integrated Circuit (I2C)

12.21. Hardware monitoring (hwmon)

12.22. General Purpose I/O (gpio)

12.23. Leds

12.24. DMA engines

12.25. Cryptography hardware acceleration

12.26. PCI

12.27. Clock

12.28. Various

13. List of merges

14. Other news sites

KernelNewbies: Linux_4.11 (last edited 2017-05-02 04:43:55 by MartiRaudsepp)