KernelNewbies:

Linux 4.11 [https://lkml.org/lkml/2017/4/30/167 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 [https://en.wikipedia.org/wiki/Opal_Storage_Specification OPAL Storage Specification], support for the Shared Memory Communications-RDMA protocol as defined in [https://tools.ietf.org/html/rfc7609 RFC7609], persistent scrollback buffers for all VGA consoles, and many new drivers and other improvements.

TableOfContents()

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 [https://kernelnewbies.org/Linux_3.13#head-3e5f0c2bcebc98efd197e3036dd814eadd62839c 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: [https://git.kernel.org/linus/772c8f6f3bbd3ceb94a89373473083e3e1113554 merge], [https://git.kernel.org/linus/945ffb60c11dfb228130f3f2bdde961cecb76671 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: [https://lwn.net/Articles/704478/ Making swapping scalable]

Code: [https://git.kernel.org/linus/6a991fc72d1243b8da0c644d3147d3ec41a0b281 commit], [https://git.kernel.org/linus/235b62176712b970c815923e36b9a9cc05d4d901 commit], [https://git.kernel.org/linus/4b3ef9daa4fc0bba742a79faecb17fdaaead083b commit], [https://git.kernel.org/linus/e8c26ab60598558ec3a626e7925b06e7417d7710 commit], [https://git.kernel.org/linus/36005bae205da3eef0016a5c96a34f10a68afa1e commit], [https://git.kernel.org/linus/7c00bafee87c7bac7ed9eced7c161f8e5332cb4e commit], [https://git.kernel.org/linus/67afa38e012e9581b9b42f2a41dfc56b1280794d commit], [https://git.kernel.org/linus/039939a65059852242c823ece685579370bc574f commit], [https://git.kernel.org/linus/ba81f83842549871cbd7226fc11530dc464500bb commit]

1.3. Journaled RAID5 to close the write hole

Based in work [https://kernelnewbies.org/Linux_4.4#head-35757d5a814256056c5c4bb7c00e4fbc57ea69d3 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 "[http://www.raid-recovery-guide.com/raid5-write-hole.aspx RAID5 write hole]" is closed - a crash during degraded operations cannot result in data corruption.

Recommended LWN article: [https://lwn.net/Articles/665299/ A journal for MD/RAID5]

Blog entry: [https://code.facebook.com/posts/414713638724358/improving-software-raid-with-a-write-ahead-log/ Improving software RAID with a write-ahead log]

Code: [https://git.kernel.org/linus/63c32ed4afc2afd6b5551a8fcdea5b546dcaca4f 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: [https://lwn.net/Articles/707602/ statx() v3]

Code: [https://git.kernel.org/linus/a528d35e8bfcc521d7cb70aaf03e1bd296c8493f 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 [https://www.kernel.org/doc/Documentation/trace/ftrace.txt 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: [https://git.kernel.org/linus/d01f4e8db22cf4d04f6c86351d959b584eb1f5f7 commit], [https://git.kernel.org/linus/b05d1093987a78695766b71a2d723aa65b5c25c5 commit], [https://git.kernel.org/linus/ec347870a9d423a4b88657d6a85b5163b3f949ee commit]

1.6. Support for OPAL drives

The [https://en.wikipedia.org/wiki/Opal_Storage_Specification 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: [https://git.kernel.org/linus/455a7b238cd6bc68c4a550cbbd37c1e22b64f71c commit], [https://git.kernel.org/linus/a98e58e54fbd0c80b6a46a7cac6e231eed3b3efa 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 [https://tools.ietf.org/html/rfc7609 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: [https://tools.ietf.org/html/rfc7609 RFC7609]

Code: [https://git.kernel.org/linus/f3a3e248f3f7cd9a4bed334022704d7e7fc781bf 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: [https://git.kernel.org/linus/aabd31c421ddc730edf6d89c4ed3885e4fca5e30 commit], [https://git.kernel.org/linus/1a336c934623b011c289a298aff3b7fdefb3f876 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-06-13 07:25:27 by MichaelKerrisk)