#pragma section-numbers on #pragma keywords Linux, kernel, operating system, changes, changelog, file system, Linus Torvalds, open source, device drivers #pragma description Summary of the changes and new features merged in the Linux kernel during the 4.5 development cycle Linux 4.5 has not been released Summary: This release adds a new copy_file_range(2) system call that allows to make copies of files without transferring data through userspace; experimental Powerplay power management for modern Radeon GPUs; scalability improvements in the Btrfs free space handling; support GCC's Undefined Behavior Sanitizer (-fsanitize=undefined); Forwarded Error Correction support in the device-mapper's verity target; support for the MADV_FREE flag in madvise(); the new cgroup unified hierarchy is considered stable; scalability improvements for SO_REUSEPORT UDP sockets; scalability improvements for epoll, and better memory accounting of sockets in the memory controller. There are also new drivers and many other small improvements. = Prominent features = == Copy offloading with new copy_file_range(2) system call == Copying a file consists in reading the data from a file to user space memory, then copy that memory to the destination file. There is nothing wrong with this way of doing things, but it requires doing extra copies of the data to/from the process memory. In this release Linux adds a system call, copy_file_range(2), which allows to copy a range of data from one file to another, avoiding the mentioned cost of transferring data from the kernel to user space and then back into the kernel. This system call is only very [https://lwn.net/Articles/658718/ slightly faster] than {{{cp}}}, because the costs of these memory copies are barely noticeable compared with the time it takes to do the actual I/O, but there are some cases where it can help a lot more. In networking filesystems such as NFS, copying data involves sending the copied data from the server to the client through the network, then sending it again from the client to the copied file in the server. But with copy_file_range(2), the client can tell the NFS server to copy itself a specified data range, without transferring the data over the network (for NFS, this also requires the server-side copy feature [https://tools.ietf.org/html/draft-ietf-nfsv4-minorversion2-41#section-4 present in the upcoming NFS v4.2], and also supported experimentally in this Linux release) Local filesystems can also use this system call to optimize the avoid the copy of data; there are also some storage devices that also provide copy offloading facilities that could make use of this system call. Right now the {{{flags}}} can't be set to anything, but in the future it will allow some filesystems, such as Btrfs or future versions of ZFS, to share extents between multiple files without copying them (similar to {{{cp --reflink}}}). Currently the implementation limits copy offloading to files on the same mount and superblock (and not in the same file). Recommended LWN articles: 1:[https://lwn.net/Articles/659523/ copy_file_range()]; 2:[https://lwn.net/Articles/637436/ Copy offload] Raw man page: [http://git.kernel.org/cgit/docs/man-pages/man-pages.git/tree/man2/copy_file_range.2 copy_file_range.2] Code: [https://git.kernel.org/torvalds/c/29732938a6289a15e907da234d6692a2ead71855 commit], [https://git.kernel.org/torvalds/c/cb4c4e8091e86e08cb2d48e7ae6bf454245c36cb commit], [https://git.kernel.org/torvalds/c/3db11b2eecc02dc0eee943e71822c6d929281aa7 commit], [https://git.kernel.org/torvalds/c/eac70053a141998c40907747d6cea1d53a9414be commit], [https://git.kernel.org/torvalds/c/54dbc15172375641ef03399e8f911d7165eb90fb commit], [https://git.kernel.org/torvalds/c/04b38d601239b4d9be641b412cf4b7456a041c67 commit], [https://git.kernel.org/torvalds/c/d79bdd52d8be70d0e7024ac6715eee860a19834a commit]; NFS code: [https://git.kernel.org/torvalds/c/ffa0160a103917defd5d9c097ae0455a59166e03 commit] == Experimental Powerplay supports brings high performance to the amdgpu driver == Modern GPUs start running in low power-low performance modes, and they need to dynamically change its frequency to get the best performance. But that can't be done safely without good power management. This release adds support for [https://en.wikipedia.org/wiki/AMD_PowerPlay Powerplay] in the amdgpu driver for discrete GPUs Tonga and Fiji, and integrated APUs Carrizo and Stoney. Powerplay is the brand name for a set of technologies for the reduction of the energy consumption implemented in several of AMD CPUs and APUs; it has been available in the propietary Catalyst driver, and it aims to eventually replace the existing dynamic power management in the amdgpu driver. Powerplay support is not enabled by default for all kind of hardware supported in this release due to stability concerns; in these cases the use of Powerplay can be forced with the "amdgpu.powerplay=1" kernel option. Code: see [https://lists.freedesktop.org/archives/dri-devel/2015-November/094230.html link] == Btrfs free space handling scalability improvements == Filesystems need to keep track of which blocks are being used and which ones are free. They also need to store information about the free space somewhere, because it's too costly to generate it from scratch. Btrfs has been able to store a cache of the available free space [http://kernelnewbies.org/Linux_2_6_37#head-73fc3db571309a002aad2f56e930923422cff5d2 since 2.6.37], but the implementation is a scalability bottleneck on large (+30T), busy filesystems. This release includes a new, experimental way of representing the free space cache that takes less work overall to update on each commit and fixes the scalability issues. This new code is experimental, and it's not the default yet. It can be enabled with the {{{-o space_cache=v2}}} mount option. On the first mount with the this option set, the new free space tree will be created and a read-only compatibility flag will be enabled (older kernels will be able to read, but not to write, to the filesystem). It is possible to revert to the old free space cache (and remove the compatibility flag) by mounting the filesystem with the options {{{-o clear_cache,space_cache=v1}}}. Code: [https://git.kernel.org/torvalds/c/3e1e8bb770dba29645b302c5499ffcb8e3906712 commit], [https://git.kernel.org/torvalds/c/0f3312295d3ce1d82392244236a52b3b663480ef commit], [https://git.kernel.org/torvalds/c/1abfbcdf56d9485f050149bc4968c1609f9a0773 commit], [https://git.kernel.org/torvalds/c/73fa48b674e819098c3bafc47618d0e2868191e5 commit], [https://git.kernel.org/torvalds/c/208acb8c72d7ace6b672b105502dca0bcb050162 commit], [https://git.kernel.org/torvalds/c/a5ed91828518ab076209266c2bc510adabd078df commit], [https://git.kernel.org/torvalds/c/7c55ee0c4afba4434d973117234577ae6ff77a1c commit], [https://git.kernel.org/torvalds/c/1e144fb8f4a4d6d6d88c58f87e4366e3cd02ab72 commit], [https://git.kernel.org/torvalds/c/70f6d82ec73c3ae2d3adc6853c5bebcd73610097 commit] == Support for GCC's Undefined Behavior Sanitizer (-fsanitize=undefined) == UBSAN (Undefined Behaviour SANitizer) is a debugging tool available since GCC 4.9 (see [https://gcc.gnu.org/onlinedocs/gcc-4.9.0/gcc/Debugging-Options.html -fsanitize=undefined documentation]). It inserts instrumentation code during compilation that will perform checks at runtime before operations that could cause undefined behaviours. [https://en.wikipedia.org/wiki/Undefined_behavior Undefined behavior] means that the semantics of certain operations is undefined and the compiler presumes that such operations never happen, and the application can produce wrong results, crash or even allow security breaches; examples of undefined behaviour are using a non-static variable before it has been initialized, integer division by zero, signed integer overflows, dereferencing NULL pointers, etc. In this release, Linux supports compiling the kernel with the Undefined Behavior Sanitizer enabled with the {{{-fsanitize}}} options {{{shift, integer-divide-by-zero, unreachable, vla-bound, null, signed-integer-overflow, bounds, object-size, returns-nonnull-attribute, bool, enum}}} and, optionally, {{{alignment}}}. Most of the work is done by compiler, all the kernel does is to handle the printing of errors. Links: * [http://developerblog.redhat.com/2014/10/16/gcc-undefined-behavior-sanitizer-ubsan/ Red Hat Developer blog entry about ubsan] * [https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html#index-fsanitize_003dundefined-947 GCC's -fsanitize documentation] Code: [https://git.kernel.org/torvalds/c/c6d308534aef6c99904bf5862066360ae067abc4 commit] == Forwarded Error Correction support in the device-mapper's verity target == The device-mapper's "verity" target, used by popular platforms such as [https://source.android.com/security/verifiedboot/ Android] or Netflix, was merged [http://kernelnewbies.org/Linux_3.4#head-011d0bd1a20451b0e374283b36a71d8e8f5b7ae1 in Linux 3.4], and it allows that a file system hasn't been modified by checking every filesystem read attempt with a list of cryptographic hashes. This release adds [https://en.wikipedia.org/wiki/Forward_error_correction Forward Error Correction] support to the verity target. This feature makes possible to recover from several consecutive corrupted data blocks, by using pregenerated error correction blocks that have relatively small space overhead and can be used to reconstruct the damaged blocks. This makes possible to keep using a filesystem placed in slightly damaged media. Code: [https://git.kernel.org/torvalds/c/a739ff3f543afbb4a041c16cd0182c8e8d366e70 commit] == Add MADV_FREE flag to madvise(2) == [http://man7.org/linux/man-pages/man2/madvise.2.html madvise(2)] is a system call used by processes to tell the kernel how they are going to use their memory, allowing the kernel to optimize the memory management according to these hints to achieve better overall performance. When an application wants to signal the kernel that it isn't going to use a range of memory in the near future, it can use the MADV_DONTNEED flag, so the kernel can free resources associated with it. Subsequent accesses in the range will succeed, but will result either in reloading of the memory contents from the underlying mapped file or zero-fill-on-demand pages for mappings without an underlying file. But there are some kind of apps (notably, memory allocators) that can reuse that memory range, and MADV_DONTNEED forces them to incur in page fault, page allocation, page zeroing, etc. For avoiding that overhead, other OS like BSDs [https://www.freebsd.org/cgi/man.cgi?query=madvise&sektion=2 have supported MADV_FREE], which just mark pages as available to free if needed, but it doesn't free them inmediately. This release adds support for this flag. Recommended LWN article: [https://lwn.net/Articles/590991/ Volatile ranges and MADV_FREE] Code: [https://git.kernel.org/torvalds/c/854e9ed09dedf0c19ac8640e91bcc74bc3f9e5c9 commit], [https://git.kernel.org/torvalds/c/ef58978f1eaab140081ec1808d96ee06e933e760 commit], [https://git.kernel.org/torvalds/c/21f55b018ba57897f4d3590ecbe11516bdc540af commit], [https://git.kernel.org/torvalds/c/64b42bc1cfdf6e2c3ab7315f2ff56c31cd257370 commit], [https://git.kernel.org/torvalds/c/10853a039208c4afaa322a7d802456c8dca222f4 commit], [https://git.kernel.org/torvalds/c/337ed7eb5fada305c7d5bf168cf5032f825faddf commit], [https://git.kernel.org/torvalds/c/590a471ce92355bc6c93a48769e8616b80071991 commit], [https://git.kernel.org/torvalds/c/79cedb8f62f116e72079c4d424edbc3d90302333 commit], [https://git.kernel.org/torvalds/c/d5d6a443b24304711fe83b312d29ff26cfa03f0c commit], [https://git.kernel.org/torvalds/c/44842045e4baaf406db2954dd2e07152fa61528d commit], [https://git.kernel.org/torvalds/c/05ee26d9e7e29ab026995eab79be3c6e8351908c commit], [https://git.kernel.org/torvalds/c/b8d3c4c3009d42869dc03a1da0efc2aa687d0ab4 commit] == Better epoll multitheaded scalability == When multiple [http://man7.org/linux/man-pages/man7/epoll.7.html epoll] file descriptors or epfds (the fd returned from [http://man7.org/linux/man-pages/man2/epoll_create.2.html epoll_create() are added to a shared wakeup source, they are always added in a non-exclusive manner. This means that an event will wakeup all epfds, creating a scalability problem when many epfds are being used. This release introduces a new {{{EPOLLEXCLUSIVE}}} flag that can be passed as part of the {{{event}}} argument during an [http://man7.org/linux/man-pages/man2/epoll_ctl.2.html epoll_ctl(2)] {{{EPOLL_CTL_ADD}}} operation. This new flag allows for exclusive wakeups when there are multiple epfds attached to a shared fd event source. In a modified version of [https://en.wikipedia.org/wiki/Enduro/X Enduro/X], the use of the 'EPOLLEXCLUSIVE' flag reduced the length of this particular workload from 860s down to 24s. Recommended LWN article: [https://lwn.net/Articles/633422/#excl Epoll evolving: Better multi-threaded behavior] Code: [https://git.kernel.org/torvalds/c/df0108c5da561c66c333bb46bfe3c1fc65905898 commit], [https://git.kernel.org/torvalds/c/b6a515c8a0f6c2010a52793b43a79520bc95f994 commit] == Cgroup unified hierarchy is considered stable == cgroups, or control groups, are a feature [http://kernelnewbies.org/Linux_2_6_24#head-5b7511c1e918963d347abc8ed4b75215877d3aa3 introduced in Linux 2.6.24] which allow to allocate resources (such as CPU time, system memory, network bandwidth) among user-defined groups of processes running on a system. In the first implementation, cgroups allowed an arbitrary number of process hierarchies and each hierarchy could host any number of controllers. While this seemed to provide a high level of flexibility, in practice it had a number of problems, so in [http://kernelnewbies.org/Linux_3.16#head-c8889cafd94fac58408ccc55a02589eda7608eb9 Linux 3.16] a new, [http://lwn.net/Articles/601840/ experimental unified hierarchy], available with the {{{-o __DEVEL__sane_behavior}}} mount option. In this release, the unified hierarchy is considered stable, and it's no longer hidden behind a developer flag. It can be mounted using the {{{cgroup2}}} filesystem type. Unfortunately, the cpu controller for cgroup2 hasn't made it into this release, only memory and io controllers are available at the moment. Documentation about cgroups2 can be found at [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/cgroup-v2.txt Documentation/cgroup-v2.txt] Code: [https://git.kernel.org/torvalds/c/34a9304a96d6351c2d35dcdc9293258378fc0bd8 (merge)] == Performance improvements for SO_REUSEPORT UDP sockets == [https://lwn.net/Articles/542629/ SO_REUSEPORT] is a socket option available [http://kernelnewbies.org/Linux_3.9#head-7f858c19da75698842d3571a2424c9b62d3f5b0a since Linux 3.9] that allows multiple listener sockets to bind to the same port. Motivation for soresuseport would be something like a web server binding to port 80 running with multiple threads, where each thread might have it's own listener socket. In this release, Linux includes two optimizations for {{{SO_REUSEPORT}}} (only in UDP): * It is possible two new socket options on {{{SO_REUSEPORT}}} sockets: {{{SO_ATTACH_REUSEPORT_CBPF}}} and {{{SO_ATTACH_REUSEPORT_EBPF}}}. These options allow to define a classic or extended BPF program which defines how packets are assigned to the sockets in the reuseport group. * Faster lookup when selecting a {{{SO_REUSEPORT}}} socket for an incoming packet. Previously, the lookup process needed to consider all sockets, in this release an appropriate socket can be found much faster (see the commit link for benchmarks). Code: [https://git.kernel.org/torvalds/c/ef456144da8ef507c8cf504284b6042e9201a05c commit], [https://git.kernel.org/torvalds/c/e32ea7e747271a0abcd37e265005e97cc81d9df5 commit], [https://git.kernel.org/torvalds/c/538950a1b7527a0a52ccd9337e3fcd304f027f13 commit] == Proper control of socket memory usage in the memory controller == In past releases, socket buffers were accounted in the cgroup's memory controller, separately, without any pressure equalization between anonymous memory, page cache, and the socket buffers. When the socket buffer pool was exhausted, buffer allocations would fail hard and cause network performance to tank, regardless of whether there was still memory available to the group or not. Likewise, struggling anonymous or cache workingsets could not dip into an idle socket memory pool. Because of this, the feature was not usable for many real life applications. In this release, the new unified memory controller will account all types of memory pages it is tracking on behalf of a cgroup in a single pool. Upon pressure, the VM reclaims and shrinks and puts pressure on whatever memory consumer in that pool is within its reach. When the VM has trouble freeing memory, the network code is instructed to stop growing the cgroup's transmit windows. Overhead is only incurred when a non-root control group is created and the memory controller is instructed to track and account the memory footprint of that group. cgroup.memory=nosocket can be specified on the boot commandline to override any runtime configuration and forcibly exclude socket memory from active memory resource control. Code: [https://git.kernel.org/torvalds/c/7d828602e5ef3297a69392a2d31264e4ab9c8bb7 commit], [https://git.kernel.org/torvalds/c/8c2c2358b236530bc2c79b4c2a447cbdbc3d96d7 commit], [https://git.kernel.org/torvalds/c/931f3f4beb031cd483c1c8ab159ef1f8bdbe8888 commit], [https://git.kernel.org/torvalds/c/3d596f7b907b0281b997cf30c92994a71ad0a1a9 commit], [https://git.kernel.org/torvalds/c/af95d7df4059cfeab7e7c244f3564214aada7dad commit], [https://git.kernel.org/torvalds/c/80f23124f57c77915a7b4201d8dcba38a38b23f0 commit], [https://git.kernel.org/torvalds/c/e805605c721021879a1469bdae45c6f80bc985f4 commit], [https://git.kernel.org/torvalds/c/baac50bbc3cdfd184ebf586b1704edbfcee866df commit], [https://git.kernel.org/torvalds/c/80e95fe0fdcde2812c341ad4209d62dc1a7af53b commit], [https://git.kernel.org/torvalds/c/7941d2145abc4def5583f9d8d0b2e02647b6d1de commit], [https://git.kernel.org/torvalds/c/1109208766d9fa7059a9b66ad488e66d99ce49af commit], [https://git.kernel.org/torvalds/c/f7e1cb6ec51b041335b5ad4dd7aefb37a56d79a6 commit], [https://git.kernel.org/torvalds/c/8e8ae645249b85c8ed6c178557f8db8613a6bcc7 commit] = Drivers and architectures = All the driver and architecture-specific changes can be found in the [http://kernelnewbies.org/Linux_4.5-DriversArch Linux_4.5-DriversArch] page = Core (various) = * Allow to preconfigure tune the ASLR randomness. Two sysctls {{{/proc/sys/vm/mmap_rnd_bits and /proc/sys/vm/mmap_rnd_compat_bits}}} (for 32bit processes and 32bit-on-64bit-kernel) can be used to tune it. Recommended LWN article: [https://lwn.net/Articles/667790/ Increasing the range of address-space layout randomization]. Code: [https://git.kernel.org/torvalds/c/d07e22597d1d355829b7b18ac19afa912cf758d1 commit], [https://git.kernel.org/torvalds/c/e0c25d958f78acfd5c97df5776eeba3e0684101b commit], [https://git.kernel.org/torvalds/c/8f0d3aa9de57662fe35d8bacfbd9d7ef85ffe98f commit], [https://git.kernel.org/torvalds/c/9e08f57d684ac2f40685f55f659564bfd91a971e commit] * fuse: add support for {{{SEEK_HOLE}}} and {{{SEEK_DATA}}} in [http://man7.org/linux/man-pages/man2/lseek.2.html lseek(2)] [https://git.kernel.org/torvalds/c/0b5da8db145bfd44266ac964a2636a0cf8d7c286 commit] * fcntl: allow to set O_DIRECT flag on pipe (will be used by CRIU to migrate packetized pipes) [https://git.kernel.org/torvalds/c/0dbf5f20652108106cb822ad7662c786baaa03ff commit] * futex: Allow {{{FUTEX_CLOCK_REALTIME}}} with {{{FUTEX_WAIT}}} op [https://git.kernel.org/torvalds/c/337f13046ff03717a9e99675284a817527440a49 commit] * RCU: Add {{{rcupdate.rcu_normal}}} kernel parameter to suppress expedited grace periods, that is, to treat requests for expedited grace periods as if they were requests for normal grace periods. Useful for extreme real-time workloads [https://git.kernel.org/torvalds/c/5a9be7c628c5273f84abacebf7faf2488376e0f0 commit] * RCU: Add kernel parameter {{{rcupdate.rcu_normal_after_boot}}} that disables expedited grace periods just before init is spawned [https://git.kernel.org/torvalds/c/3e42ec1aa716f10c68294b8492ae3ea684528699 commit] * Allow disabling mandatory file locking at compile time (appears to be almost unused and buggy and there appears no real interest in doing anything with it). Recommended LWN article: [https://lwn.net/Articles/667210/ Optional mandatory locking]. [https://git.kernel.org/torvalds/c/9e8925b67a809bb27ce4b7d352d67f25cf1d7fc5 commit] * vfio: No-IOMMU mode. Only with an IOMMU can userspace access to DMA capable devices be considered secure, but some people still want to do it [https://git.kernel.org/torvalds/c/03a76b60f8ba27974e2d252bc555d2c103420e15 commit] * workqueues: implement a workqueue lockup detector [https://git.kernel.org/torvalds/c/82607adcf9cdf40fb7b5331269780c8f70ec6e35 commit] * sysctl: enable strict writes by default. File position will be respected when doing multiple writes to a sysctl, instead of rewriting the content with each write [https://git.kernel.org/torvalds/c/41662f5cc55335807d39404371cfcbb1909304c4 commit] * scripts: add {{{prune-kernel}}} script to clean up old kernel images [https://git.kernel.org/torvalds/c/b64e86cdf6a9d772c47b8e594dd173b86270fd1b commit] * configfs: Add support for binary attributes [https://git.kernel.org/torvalds/c/03607ace807b414eab46323c794b6fb8fcc2d48c commit] *workqueues: Add debug facility, enabled with the {{{workqueue.debug_force_rr_cpu}}} kernel parameter, which forces workqueue items to be run in foreign CPUs [https://git.kernel.org/torvalds/c/f303fccb82928790ec58eea82722bd5c54d300b3 commit] = File systems = * XFS * Introduce per-inode [http://kernelnewbies.org/Linux_4.0#head-fe050921ca23e738d347755a42f15f9972767e44 DAX] enablement, because rather than just being able to turn DAX on and off via a mount option, some applications may only want to enable DAX for certain performance critical files in a filesystem. When this flag is set on a directory, it acts as an "inherit flag". That is, inodes created in the directory will automatically inherit the on-disk inode DAX flag, enabling administrators to set up directory hierarchies that automatically use DAX. Setting this flag on an empty root directory will make the entire filesystem use DAX by default [https://git.kernel.org/torvalds/c/58f88ca2df7270881de2034c8286233a89efe71c commit] * Extensive CRC validation during log recover, needed in some storage devices such as persistent memory [https://git.kernel.org/torvalds/c/7088c4136fa1cba26531fde40bdcfcf3d2ccd533 commit], [https://git.kernel.org/torvalds/c/6528250b712102a7481c28db535ef251459d1868 commit] * Add a mechanism to inject CRC errors into log records to facilitate testing torn write detection during log recovery [https://git.kernel.org/torvalds/c/609adfc2ed5ba16700f125da0b656248bd9d4316 commit] * ext4 * Add project quota support [https://git.kernel.org/torvalds/c/689c958cbe6be4f211b40747951a3ba2c73b6715 commit], [https://git.kernel.org/torvalds/c/040cb3786d9b25293b8b0b05b90da0f871e1eb9b commit], [https://git.kernel.org/torvalds/c/9b7365fc1c82038faa52d56173b20221cf422cbe commit] * F2FS * Introduce new option {{{data_flush}}} mount option, which enables data flushing before checkpoint in order to persist data of regular and symlink [https://git.kernel.org/torvalds/c/343f40f0a70eb7cee9cc8d6fcfbb3917252a5245 commit] * Add new ioctl {{{F2FS_IOC_DEFRAGMENT}}}, which supports file defragment in a specified range of regular file [https://git.kernel.org/torvalds/c/d323d005ac4a2d413128267af76bb9d71f7303da commit] * CIFS * Allow using {{{O_DIRECT}}} with option {{{cache=loose}}} [https://git.kernel.org/torvalds/c/882137c4d64175e2bb38cd842e25d54e6de31da8 commit] * Make echo interval tunable with echo_interval mount option [https://git.kernel.org/torvalds/c/adfeb3e00e8e1b9fb4ad19eb7367e7c272d16003 commit] * GFS2 * Extended attribute readahead optimizations [https://git.kernel.org/torvalds/c/c8d577038449a718ad0027d1790b6ef4441715d4 commit], [https://git.kernel.org/torvalds/c/39b0555f7a1f96ecd303103df15596db49c36c65 commit] * Rework how GFS2's NFS cookies are managed. This fixes readdir problems with nfs-over-gfs2 [https://git.kernel.org/torvalds/c/471f3db2786bc32011d6693413eb93b0c3da2579 commit] * Btrfs * FAT * Support preallocation via the [http://man7.org/linux/man-pages/man2/fallocate.2.html fallocate(2)] on VFAT [https://git.kernel.org/torvalds/c/b13bb33eacb7266d66a3adf03adaa0886d091789 commit] * NFS * Support server-supplied layoutstats sampling period [https://git.kernel.org/torvalds/c/d0379a5d066a998b0210a81dc52e266ce4daaa36 commit] * Allow the combination pNFS and labeled NFS [https://git.kernel.org/torvalds/c/95864c9154c1385c33e6782f4467c8f1422c1c90 commit] * Ceph * Asynchronous IO support [https://git.kernel.org/torvalds/c/c8fe9b17d055fe80e1a1591f5900ce41fbf6b796 commit] * Initial CEPH_FEATURE_FS_FILE_LAYOUT_V2 support, a format change of MClientReply/MclientCaps [https://git.kernel.org/torvalds/c/5ea5c5e0a7f70b256417d3b6e36bd9851504babd commit] * OverlayFS = Memory management = * pipes: limit the per-user amount of pages allocated in pipes. It is possible for a single process to cause an OOM condition by filling large pipes with data that are never read. This release makes possible to enforce a per-user soft limit above which new pipes will be limited to a single page (4KB), as well as a hard limit above which no new pipes may be created for this user. The limit are controlled by two new sysctls : {{{pipe-user-pages-soft}}}, and {{{pipe-user-pages-hard}}}. Both may be disabled by setting them to zero. The default soft limit allows the default number of FDs per process (1024) to create pipes of the default size (64kB). The hard limit is disabled by default to avoid breaking existing applications that make intensive use of pipes (eg: for [http://linux.die.net/man/2/splice splice(2)]) [https://git.kernel.org/torvalds/c/759c01142a5d0f364a462346168a56de28a80f52 commit] * proc: Currently, {{{/proc/pid/smaps}}} will always show {{{Swap: 0 kB}}} for shmem-backed mappings, even if the mapped portion does contain shmem-backed pages that were swapped out. This release accounts for shmem swap [https://git.kernel.org/torvalds/c/c261e7d94f0dd33a34b6cf98686e8b9699b62340 commit] * proc: There are several shortcomings with the accounting of shared memory (SysV shm, shared anonymous mapping, mapping of a tmpfs file). The values in {{{/proc//status}}} and {{{statm}}} don't allow to distinguish between shmem memory and a shared mapping to a regular file, even though theirs implication on memory usage are quite different. This release adds a breakdown of {{{VmRSS}}} in {{{/proc//status}}} via new fields {{{RssAnon, RssFile and RssShmem}}}. These fields tell the user the memory occupied by private anonymous pages, mapped regular files and shmem, respectively [https://git.kernel.org/torvalds/c/eca56ff906bdd0239485e8b47154a6e73dd9a2f3 commit], [https://git.kernel.org/torvalds/c/8cee852ec53fb530f10ccabf1596734209ae336b commit] * vmstats: replace {{{THP_SPLIT}}} with tree events: {{{THP_SPLIT_PAGE, THP_SPLIT_PAGE_FAILED}}} and {{{THP_SPLIT_PMD}}} [https://git.kernel.org/torvalds/c/122afea9626ab3f717b250a8dd3d5ebf57cdb56c commit] * Revert {{{/proc//maps [stack:TID]}}} annotation [https://git.kernel.org/torvalds/c/65376df582174ffcec9e6471bf5b0dd79ba05e4a commit] = Block layer = * Enable DAX (page cache bypass) for raw block devices. This capability is targeted primarily to hypervisors wanting to provision persistent memory for guests. It can be disabled / enabled dynamically via the new {{{BLKDAXSET}}} ioctl. This feature is experimental and cause data loss, it needs to be enabled explicitely [https://git.kernel.org/torvalds/c/5a023cdba50c5f5f2bc351783b3131699deb3937 commit], [https://git.kernel.org/torvalds/c/03cdadb04077b9311bbc67d98cc5401aff76482d commit] * raid5-cache: add journal hot add/remove support [https://git.kernel.org/torvalds/c/f6b6ec5cfac306c1eea66f074050864efcb11851 commit] * lightnvm: Allow to initialize a Open-Channel SSD with a defined on-disk format, that keeps a small set of metadata to bring up the media manager on top of the device [https://git.kernel.org/torvalds/c/e3eb3799f7e0d0924ceeba672ab271865de2802d commit], [https://git.kernel.org/torvalds/c/5569615424613aa006005f18b03a3a12738a47d7 commit] * lightnvm: support factory reset [https://git.kernel.org/torvalds/c/8b4970c41f88ad772771f87b1c82c395248a84d8 commit] * dm verity: add {{{ignore_zero_blocks}}} feature, which makes dm-verity not verify blocks that are expected to contain zeroes and always return zeroes instead. This may be useful if the partition contains unused blocks that are not guaranteed to contain zeroes [https://git.kernel.org/torvalds/c/0cc37c2df4fa0aa702f9662edce4b7ce12c86b7a commit] * drbd: Backport the {{{events2}}} command [https://git.kernel.org/torvalds/c/a29728463b254ce81ecefdf20c1a02e01d9361da commit] and the "status" command [https://git.kernel.org/torvalds/c/a55bbd375d1802141f0f043e2cd08f85c23d6209 commit] * drbd: make drbd known to {{{lsblk}}} [https://git.kernel.org/torvalds/c/63a7c8ad92af5f57d4a2c5be223d6ca424c3670b commit] = Cryptography = * talitos: add algorithms: ecb(aes), ctr(aes), ecb(des), cbc(des), ecb(des3_ede) [https://git.kernel.org/torvalds/c/5e75ae1b3cef6455b131835621216cb92060da34 commit] * rsa: adds PKCS#1 v1.5 standard RSA padding [https://git.kernel.org/torvalds/c/3d5b1ecdea6fb94f8c61554fcb2ba776a2d3d0e6 commit] * qat: Support for Intel C3xxx with Intel Quick Assist Technology for accelerating crypto and compression workloads [https://git.kernel.org/torvalds/c/9809ebcd0e8cacb20a938e7a9fab68ea47e80f82 commit], [https://git.kernel.org/torvalds/c/890c55f4dc0e60a4ba71ab9b6877f69ff7053213 commit], [https://git.kernel.org/torvalds/c/8b206f2d666f41f0aa83dec83504801ee945d3dc commit] * qat: Support for Intel C62x with Intel Quick Assist Technology for accelerating crypto and compression workloads [https://git.kernel.org/torvalds/c/a6dabee6c8ba770bab7a3ec63b6a5c1059331d5c commit] * atmel-aes: add new version available with SAMA5D2 devices [https://git.kernel.org/torvalds/c/973e209d743e22e9d514cd3378281608845456f6 commit], add support to GCM mode [https://git.kernel.org/torvalds/c/d4419548dba9575934fee6d9fa20a480257889b2 commit] = Security = * Extended Verification Module: Allow to load an x509 certificate from the kernel onto the ".evm" trusted keyring [https://git.kernel.org/torvalds/c/2ce523eb8976a12de1a4fb6fe8ad0b09b5dafb31 commit], [https://git.kernel.org/torvalds/c/7626676320f398980a6bb4490fd58e924c888f6a commit] * Integrity Measurement Architecture * Allow to update multiple times the IMA policy. The new rules get appended to the original policy. Users must have in mind that the rules are scanned in FIFO order so it's necessary to be careful when designing and adding new ones [https://git.kernel.org/torvalds/c/38d859f991f3a05b352a06f82af0baa1acf33e02 commit] * Allow the root user to read the current IMA policy rules. It is often useful to be able to read back the IMA policy, and even more important after introducing the ability to update the IMA policy [https://git.kernel.org/torvalds/c/80eae209d63ac6361c7b445f7e7e41f39c044772 commit] * keys: forbid to remove certain keys. A new key flag named {{{KEY_FLAG_KEEP}}} is added to prevent userspace from being able to unlink, revoke, invalidate or timed out a key on a keyring. When this flag is set on the keyring, all keys subsequently added are flagged. In addition, when this flag is set, the keyring itself can not be cleared [https://git.kernel.org/torvalds/c/d3600bcf9d64d88dc1d189a754dcfab960ce751f commit] * keys: enable to use TPM2 authorization policies to seal trusted keys [https://git.kernel.org/torvalds/c/5beb0c435bdde35a09376566b0e28f7df87c9f68 commit] * keys: Allow to select hash algorithm for TPM2 chips. For TPM 1.x the only allowed value is sha1. For TPM 2.x the allowed values are sha1, sha256, sha384, sha512 and sm3-256 [https://git.kernel.org/torvalds/c/5ca4c20cfd37bac6486de040e9951b3b34755238 commit] * selinux: Make validatetrans decisions available through selinuxfs. "/validatetrans" is added to selinuxfs for this purpose. This functionality is needed by file system servers implemented in userspace or kernelspace without the VFS layer [https://git.kernel.org/torvalds/c/f9df6458218f4fe8a1c3bf0af89c1fa9eaf0db39 commit] = Tracing and perf tool = * Allow using trace events fields as sort order keys, making {{{perf evlist --trace_fields}}} show those, and then the user can select a subset and use like: {{{perf top -e sched:sched_switch -s prev_comm,next_comm}}}. That works as well in {{{perf report}}} when handling files containing tracepoints. Support for things like {{{perf report -s 'switch.*' --stdio}}} is also possible [https://git.kernel.org/torvalds/c/c7c2a5e40f17ab3b14716d4f08d03792a9b683e7 commit], [https://git.kernel.org/torvalds/c/60517d28fbd91629686dcf9a39aef4e068a3d5f6 commit], [https://git.kernel.org/torvalds/c/a34bb6a08d6020bde0475bc901793771858a1112 commit], [https://git.kernel.org/torvalds/c/5d0cff93bb7aa85349230d4e29902b2648640c53 commit], [https://git.kernel.org/torvalds/c/3b099bf5898ac1bf44d822f0bc15a7517e6fa117 commit], [https://git.kernel.org/torvalds/c/2e422fd1e4b0a1c0ca11d360be2147c87911dd1a commit], [https://git.kernel.org/torvalds/c/d49dadea78624353d1df660efb49f187bd5c5971 commit], [https://git.kernel.org/torvalds/c/4c96bee03247c6eab27287fa66457a231b9fab79 commit], [https://git.kernel.org/torvalds/c/775d8a1b0d75211cc6123915c6b5b688f2002478 commit] * BPF programs can now to specify {{{perf probe}}} tunables via its section name, separating {{{key=val}}} values using semicolons. A {{{exec}}} key is used to specify an user executable which allows to attach BPF programs at uprobe events [https://git.kernel.org/torvalds/c/361f2b1d1d7231b8685d990b886f599378a4d5a5 commit]; a {{{module}}} key is used to allow users to attach BPF programs to symbols in modules [https://git.kernel.org/torvalds/c/5dbd16c0c9d17ab1ab2226a5926482c26c0287ed commit], an {{{inline}}} key that allows to specify whether to probe at inline symbols or not and a {{{force}}} key to forcibly add events with existing name" [https://git.kernel.org/torvalds/c/03e01f568759ddbfdaff892e299758e7771a3478 commit] * Allow BPF scriptlets specify arguments to be fetched using DWARF info, using a prologue generated at compile/build time. {{{perf probe}}} various options can be used to list functions, or see what variables can be collected at any given point [https://git.kernel.org/torvalds/c/a08357d8dc7d3025d1094f727ad1f7e837766f93 commit], [https://git.kernel.org/torvalds/c/bfc077b4cf106793b30bf942e426ee99f1f4ac44 commit], [https://git.kernel.org/torvalds/c/d35b32891a61f1d3909bdc5280badf309adc4693 commit] * Introduce the {{{perf stat record/report}}} commands. At the moment {{{record}}} creates a simple (header only)perf.data file [https://git.kernel.org/torvalds/c/4979d0c7d0c73a3e799d4dcfbacd3cd11cc55638 commit], [https://git.kernel.org/torvalds/c/664c98d4e1c2ff60627d78d4c8ae81cd2df13783 commit], [https://git.kernel.org/torvalds/c/ba6039b6c8fcc24de7d6ab7b0bada4becaf84a2c commit], [https://git.kernel.org/torvalds/c/89af4e05c21d68f22e07fe66940ea675615a49ed commit] * Add initial {{{perf config}}} command, for now just with a {{{--list}}} command to the contents of the configuration file in use [https://git.kernel.org/torvalds/c/30862f2c5725c46afcfab5af710fdf5163bf0f81 commit], [https://git.kernel.org/torvalds/c/7d6852432acb3b09fc3ec45dd65421d34eebe3b5 commit] * Introduce a new callchain mode: {{{folded ( perf report -g folded)}}} to print callchains in a line, facilitating {{{perf report}}} output processing by other tools, such as [http://www.brendangregg.com/blog Brendan Gregg]'s flamegraph tools [https://git.kernel.org/torvalds/c/2c6caff2b26fde8f3f87183f8c97f2cebfdbcb98 commit], [https://git.kernel.org/torvalds/c/8c430a34869946f1f5852f02d910ceef80040be5 commit], [https://git.kernel.org/torvalds/c/26e779245dd6f5270c0696860438e5c03d0780fd commit] * perf script: If no script is specified for stat data, display stat events in raw form [https://git.kernel.org/torvalds/c/36e33c53f4b693d96fb8dd4529fe14306d4e3e76 commit] * perf script: Add Python support for stat events [https://git.kernel.org/torvalds/c/aef90263561a87ae6d9c6a0f4071d825ce636eef commit], [https://git.kernel.org/torvalds/c/b8a1962d17b4e3cfdd7b7dc9ebd94affbcb4c1c5 commit] * perf record: Add {{{--buildid-all}}} option to record build-id of all DSOs regardless whether it's actually hit or not [https://git.kernel.org/torvalds/c/6156681b73f2fffe56493e9a50518c0cbfcd8ba3 commit] * perf record: Add {{{record.build-id}}} config option, which can be set to three different options, see commit for more details [https://git.kernel.org/torvalds/c/7a29c087ff80f5d534bd6729c852099fc572c8d0 commit] * perf record: Support custom vmlinux path, when vmlinux is needed as the source of DWARF info to generate prologue for BPF programs [https://git.kernel.org/torvalds/c/7efe0e034c713716060bc7794c7e332589980c70 commit] * perf report/top: Add {{{--raw-trace}}} option [https://git.kernel.org/torvalds/c/053a3989e12fdf3be45c00ec1cb0ce09fba0ee4a commit] * perf report: {{{--call-graph}}} option add support for how to display callchain values. Possible values are {{{percent, period}}} and {{{count. percent}}} is same as before and it's the default behavior. {{{period}}} displays the raw period value. {{{count}}} displays the number of occurrences [https://git.kernel.org/torvalds/c/f2af008695e0b54a58b76caecd52af7e6c97fb29 commit] * perf report: Change default to use event group view. If users want to keep the original behavior, they can set the report.group config variable to false and/or use {{{--no-group}}} option [https://git.kernel.org/torvalds/c/1e9abf8b03c8f9352f54171647296c41317679a4 commit] * perf build: Introduce {{{FEATURES_DUMP}}} make variable to specify a file where to write the {{{make feature-dump}}} output [https://git.kernel.org/torvalds/c/96b9e70b8e6cd65f71ee71889143976f3afb038a commit]; support the {{{O}}} make variable [https://git.kernel.org/torvalds/c/eb807730c034090599135bc03578015ebf8974af commit], [https://git.kernel.org/torvalds/c/c15e758c4bd7fbe38983e36258541ffcf81e1500 commit] * Add {{{file_only}}} config option to strlist [https://git.kernel.org/torvalds/c/dd8232bc9d13b729d92590b55befd14e49f81eca commit] * bpf: add show_fdinfo handler for maps [https://git.kernel.org/torvalds/c/f99bf205dab026ef434520198af2fcb7dae0efdb commit] = Virtualization = * paravirtualized [https://lwn.net/Articles/590243/ queued spinlock]: * Allow limited lock stealing, which allows one attempt for the lock waiter to steal the lock when entering the PV slowpath [https://git.kernel.org/torvalds/c/1c4941fd53afb46ab15826628e4819866d008a28 commit] * Queue node adaptive spinning [https://git.kernel.org/torvalds/c/cd0272fab785077c121aa91ec2401090965bbc37 commit] * Collect slowpath lock statistics [https://git.kernel.org/torvalds/c/45e898b735620f426eddf105fc886d2966593a58 commit] * Xen * Convert the backend driver into an multiqueue driver and exposing more than one queue to the frontend [https://git.kernel.org/torvalds/c/038a75afc54d4b4dc9794213bb16e88c1a31a752 (merge)] * user-mode-linux: Add seccomp support [https://git.kernel.org/torvalds/c/c50b4659e444b020657e01bdf769c965e5597cb0 commit] = Networking = * Add generic [http://kernelnewbies.org/Linux_3.11#head-e655ee02ba64c3261bf702eb01402464561efa1f device polling] support for all drivers that support NAPI, instead of requiring specific support in each driver [https://git.kernel.org/torvalds/c/85c72ba1ed0c116adabf312ba64e61934557527e (merge)] * Add the ability to destroy a TCP socket using the netlink socket diag interface. It causes all blocking calls on the socket to fail fast with {{{ECONNABORTED}}} and causes a protocol close of the socket. It informs the other end of the connection by sending a RST, i.e., initiating a TCP ABORT. Recommended LWN article: [https://lwn.net/Articles/666220/ SOCK_DESTROY: an old Android patch aims upstream]. [https://git.kernel.org/torvalds/c/64be0aed59ad519d6f2160868734f7e278290ac1 commit], [https://git.kernel.org/torvalds/c/6eb5d2e08f071c05ecbe135369c9ad418826cab2 commit], [https://git.kernel.org/torvalds/c/c1e64e298b8cad309091b95d8436a0255c84f54a commit], [https://git.kernel.org/torvalds/c/08ff924e7fa7b826396f5ef1cb15656db7fb6545 commit] * IPv4: Make TCP keepalive settings per-namespace [https://git.kernel.org/torvalds/c/13b287e8d1cad951634389f85b8c9b816bd3bb1e commit], {{{tcp_keepalive_probes}}} sysctl knob [https://git.kernel.org/torvalds/c/9bd6861bd4326e3afd3f14a9ec8a723771fb20bb commit], {{{tcp_keepalive_intvl}}} sysctl knob [https://git.kernel.org/torvalds/c/b840d15d39128d08ed4486085e5507d2617b9ae1 commit] * IPv6 * Add a new address generator mode, using the stable address generator with an automatically generated secret. This is intended as a default address generator mode for device types with no EUI64 implementation. The new generator is used for {{{ARPHRD_NONE}}} interfaces initially, adding default IPv6 autoconf support to e.g. tun interfaces [https://git.kernel.org/torvalds/c/cc9da6cc4f56e05cc9e591459fe0192727ff58b3 commit] * Add the support for adding expire value to routes [https://git.kernel.org/torvalds/c/32bc201e1974976b7d3fea9a9b17bb7392ca6394 commit] * Add {{{IPV6_HDRINCL}}} option for raw sockets, it indicates the application provides the IPv6 header on all outgoing data. It's equivalent to the [https://msdn.microsoft.com/en-us/library/windows/desktop/ms738574%28v=vs.85%29.aspx Windows option] with the same name [https://git.kernel.org/torvalds/c/715f504b118998c41a2079a17e16bf5a8a114885 commit] * ILA: Add generic ILA translation facility to avoid a big performance hit in the receive path. This table can be configured with identifier to locator mappings, and can be queried to resolve a mapping. Queries can be parameterized based on interface, direction (incoming or outoing), and matching locator. The table is implemented using rhashtable and is configured via netlink (through {{{ip ila ..}}} in iproute) [https://git.kernel.org/torvalds/c/7f00feaf107645d95a6d87e99b4d141ac0a08efd commit] * Multi Protocol Label Switching: support for dead routes ({{{RTNH_F_DEAD}}} and {{{RTNH_F_LINKDOWN}}} flags on mpls routes). Also adds code to ignore dead routes during route selection [https://git.kernel.org/torvalds/c/c89359a42e2a49656451569c382eed63e781153c commit] * Enable child sockets to inherit the L3 master device index. Enabling this option allows a "global" listen socket to work across L3 master domains (e.g., VRFs) with connected sockets derived from the listen socket to be bound to the L3 domain in which the packets originated. A sysctl setting ({{{tcp_l3mdev_accept}}}) is added to control the behavior which is similar to sk_mark and sysctl_tcp_fwmark_accept [https://git.kernel.org/torvalds/c/6dd9a14e92e54895e143f10fef4d0b9abe109aa9 commit] * SCTP: dynamically enable or disable "potentially failed" state via a sysctl [https://git.kernel.org/torvalds/c/566178f853c1aa57be9c16007c7cca07df5d51b6 commit] * Wireless * Add support for aborting an ongoing scan using the command {{{NL80211_CMD_ABORT_SCAN}}} in the nl80211 interface [https://git.kernel.org/torvalds/c/91f123f20d64c99db0ce8d2bbc5bb82012d3cc1a commit], [https://git.kernel.org/torvalds/c/91d3ab46730379e89e1e908c6f62fbcadb3d8f08 commit] * mac80211_hwsim: Advertise support for VHT IBSS [https://git.kernel.org/torvalds/c/00eeccc4a9a84afe819062df13cdb47159919a7c commit] * Netfilter * nftables: add netdev packet forwarding support. You can use this to forward packets from ingress to the egress path of the specified interface. This provides a fast path to bounce packets from one interface to another specific destination interface [https://git.kernel.org/torvalds/c/39e6dea28adc874f7021e5580c13cab0b58407ea commit] * nftables: add netdev packet duplication support. You can use this to duplicate packets and inject them at the egress path of the specified interface. This duplication allows you to inspect traffic from the dummy or any other interface dedicated to this purpose [https://git.kernel.org/torvalds/c/502061f81d3eb4518d2e72178e494a8547788ad0 commit] * nftables: add byte/packet counter matching support [https://git.kernel.org/torvalds/c/48f66c905a976bf0ff092fc24f08d9addd82a245 commit] * nftables: Allow to invert limit expression in nf_tables, so we can throttle overlimit traffic [https://git.kernel.org/torvalds/c/c7862a5f0de5f521c545f3436f0aa190964342dd commit] * nftables: Add support for mangling packet payload. Checksum for the specified base header is updated automatically if requested, however no updates for any kind of pseudo headers are supported, meaning no stateless NAT is supported [https://git.kernel.org/torvalds/c/7ec3f7b47b8d9ad7ba425726f2c58f9ddce040df commit] * Add cgroup2 support to iptables [https://git.kernel.org/torvalds/c/c38c4597e4bf3e99860eac98211748e1ecb0e139 commit] * meta: Allow to redirect bridged packets to local machine [https://git.kernel.org/torvalds/c/b4aae759c22e71a3c32144f0b3bc4f2fa4aaae98 commit] * Add new {{{NFTA_SET_USERDATA}}} attribute to store user data in sets [https://git.kernel.org/torvalds/c/e6d8ecac9e68265aee9be711c5bd29406129666f commit] * Infiniband *Add configfs for RDMA communication manager (CM) [https://git.kernel.org/torvalds/c/045959db65c67d7189dc89ecddb5fa10aafa449d commit] *Add cross-channel support, allowing to execute WQEs that involve synchronization of I/O operations’ on different QPs. This capability enables to program complex flows with a single function call, hereby significantly reducing overhead associated with I/O processing [https://git.kernel.org/torvalds/c/8a06ce59a4cd034c52c59c44ff6b0785a3969409 commit] * Add sysfs files to show attributes of net device and gid type to each GID in the GID table [https://git.kernel.org/torvalds/c/470be516a226e851d62a8d3d31dc162500b84487 commit] * Add RoCE V2 support [https://git.kernel.org/torvalds/c/7766a99fdcd30c78fc8299db9102e3624232007c commit] * debugging: add support for injecting errors in netdev notifier events [https://git.kernel.org/torvalds/c/02fff96a79775b7adc34eb599fc6b0476ccda520 commit], add support for CHANGEUPPER notifier error injection [https://git.kernel.org/torvalds/c/c39d0454ec9b703d3540dd10a2e9692f89aa48ab commit] * Add clsact qdisc, a generalization of the ingress qdisc as a qdisc holding only classifiers [https://git.kernel.org/torvalds/c/1f211a1b929c804100e138c5d3d656992cfd5622 commit] * Generic Network Virtualization Encapsulation (geneve) * Add UDP port offload for Ethernet devices [https://git.kernel.org/torvalds/c/a8170d2b9e8d38a1f3fa3b40b6f8cd34a87d5382 commit] * bonding * Add 802.3ad support for 100G speeds [https://git.kernel.org/torvalds/c/3952af4d50343728e54bf93880e0ecb9c42c47aa commit] * Implement lower state change propagation [https://git.kernel.org/torvalds/c/f7c7eb7f7af7f87e0fc150994785fd139576e43a commit] * IPv6 over Low power Wireless Personal Area Network (6lowpan) * Generic Header Compression support ([http://tools.ietf.org/html/rfc7400 RFC 7400]) [https://git.kernel.org/torvalds/c/c39da3bb5b978ca03f1702c99965f3db1204516a commit], [https://git.kernel.org/torvalds/c/70cc86752e59ec26fcd31679b1eef23e8cb4b516 commit], [https://git.kernel.org/torvalds/c/20616a5a1e3bb47c385c6d5f27520e7a3cc82864 commit], [https://git.kernel.org/torvalds/c/2f4799478c94928802c79edd12711a0e9e8b6f1b commit], [https://git.kernel.org/torvalds/c/7e568f50c19c731938fee24a0f048f35120080f3 commit], [https://git.kernel.org/torvalds/c/43f26e17d02f5c772cedc3ee16b192ed79764474 commit], [https://git.kernel.org/torvalds/c/5e5c08cbee7d75d026ff50a5051f2ed19b4ba301 commit] * Add debugfs support [https://git.kernel.org/torvalds/c/00f59314111a6b18ee65b238b38c470dbdbf3be5 commit], [https://git.kernel.org/torvalds/c/b1815fd949e5bd06d118019acf68f87c9414f705 commit] * Bluetooth * Add support for sending to monitor channel system notes as text strings for debugging purposes [https://git.kernel.org/torvalds/c/dd31506d4aece48943802c2bca3f1f7d2e7266b4 commit] * Add support for controller specific logging to allow userspace to log per controller [https://git.kernel.org/torvalds/c/ac71494934c475e3f51e5e3e64a12f57618d82a4 commit] * Add support for Get Advertising Size Information command, which allows to retrieve size information for advertising data and scan response data fields depending on the selected flags [https://git.kernel.org/torvalds/c/40b25fe5dc57a6557b96241b75ae63dce716a487 commit] * Add support for bluetooth v4.1 Start Limited Discovery command [https://git.kernel.org/torvalds/c/78b781ca0d35191ebf8d8cad8beec810270f0f2e commit] * batman-adv: export single hop neighbor list via debugfs [https://git.kernel.org/torvalds/c/7587405ab93e5383e64ac311f460c30a02a8e9cb commit] * nfc: netlink: Add support for missing HCI event {{{EVT_CONNECTIVITY}}} and forward it to userspace [https://git.kernel.org/torvalds/c/9afec6d3866b8451abcf1a7a1a381a3be6c83386 commit] * Scalable TCP: allow setting {{{SCTP_SACK_IMMEDIATELY}}} by the application [https://git.kernel.org/torvalds/c/27f7ed2b11d42ab6d796e96533c2076ec220affc commit] * Near Field Communication: support ISO14443 Type4A tags [https://git.kernel.org/torvalds/c/ce2e56cdfbb010e22073d303161e74c144ebe731 commit] * ethtool: Add support for phy statistics [https://git.kernel.org/torvalds/c/f3a4094558ddf8afa8bb58250d548e15e059c65a commit] * Add sysctl {{{max_skb_frags}}} to configure the maximum numbers of fragments per skb [https://git.kernel.org/torvalds/c/5f74f82ea34c0da80ea0b49192bb5ea06e063593 commit] = List of merges = * [https://git.kernel.org/torvalds/c/19ccb28e296d5afa299db1003d37e5d37994d46e Pull vfs compat_ioctl fixes ] * [https://git.kernel.org/torvalds/c/32fb378437a1d716e72a442237d7ead1f435ecf0 Pull vfs RCU symlink updates ] * [https://git.kernel.org/torvalds/c/ddf1d6238dd13a3bd948e8fcb1109798ef0af49b Pull vfs xattr updates ] * [https://git.kernel.org/torvalds/c/9061cbe62adeccf8c986883bcd40f4aeee59ea75 Pull RCU updates ] * [https://git.kernel.org/torvalds/c/24af98c4cf5f5e69266e270c7f3fb34b82ff6656 Pull locking updates ] * [https://git.kernel.org/torvalds/c/5cb52b5e1654f3f1ed9c32e34456d98559c85aa0 Pull perf updates ] * [https://git.kernel.org/torvalds/c/4bd20db2c027eab7490e3c0466734738bef2dd24 Pull RAS updates ] * [https://git.kernel.org/torvalds/c/af345201ea948d0976d775958d8aa22fe5e5ba58 Pull scheduler updates ] * [https://git.kernel.org/torvalds/c/4f19b8803bddbecbd8c3ac44a2cfadd9d2b85b8f Pull x86 apic updates ] * [https://git.kernel.org/torvalds/c/88cbfd07119e394b9cbb1a4a764056c4b37e8378 Pull x86 asm updates ] * [https://git.kernel.org/torvalds/c/67c707e451e12f59e57bca6cf33b5803cb74b022 Pull x86 cleanups ] * [https://git.kernel.org/torvalds/c/671d5532aaad777782b66eff71bc4dfad25f942d Pull x86 cpu updates ] * [https://git.kernel.org/torvalds/c/6896d9f7e7ee98d772224a539b7581a1e6dd6b2c Pull x86 fpu updates ] * [https://git.kernel.org/torvalds/c/0ffedcda63f56eaca99a77392b9f057dfb738817 Pull x86 mm updates ] * [https://git.kernel.org/torvalds/c/ae8a52185e5c070cf4510b323dbc1b9e46b897d6 Pull x86 platform updates ] * [https://git.kernel.org/torvalds/c/b4cee21ee057ff3e5c9014fb6a175bd932c5ce62 Pull timer updates ] * [https://git.kernel.org/torvalds/c/3d116a66ed9df0271b8d267093b3bfde2be19b3a Pull irq updates ] * [https://git.kernel.org/torvalds/c/0f8c7901039f8b1366ae364462743c8f4125822e Pull workqueue update ] * [https://git.kernel.org/torvalds/c/8c930204ce76eddeb2e1af66a75f0ab2506c76e2 Pull libata updates ] * [https://git.kernel.org/torvalds/c/fb591fbd0aee437faada42b0473835bcbaf0eb38 Pull MMC updates ] * [https://git.kernel.org/torvalds/c/581dbc8bfc47ab16c69a67cc20dafea378ddbc60 Pull pin control updates ] * [https://git.kernel.org/torvalds/c/e795e5f4e01de550bd8947a7db910daaf7773198 Pull regmap updates ] * [https://git.kernel.org/torvalds/c/2634bf2550f4dd7d2d4373725dbe4c4d2a6499fd Pull hwmon updates ] * [https://git.kernel.org/torvalds/c/d870a9d5e31ea69a1ceb7555d0d79364c442c5c0 Pull EDAC updates ] * [https://git.kernel.org/torvalds/c/2c487121e3c4f87e82cff493872675bde52e47fc Pull LED subsystem updates ] * [https://git.kernel.org/torvalds/c/47c62e4be78303ef52ffa8134026919d0890c5a9 Pull media updates ] * [https://git.kernel.org/torvalds/c/03891f9c853d5c4473224478a1e03ea00d70ff8d Pull device mapper updates ] * [https://git.kernel.org/torvalds/c/c5c80bd923d34f7dc70e7b23eb427cd284989a1b Pull MIPS fixes ] * [https://git.kernel.org/torvalds/c/fa5fd7c628412ee09ccf5e1d6eebe1dba916b8ee Pull arm64 updates ] * [https://git.kernel.org/torvalds/c/541d284be0fcca3d3990e6dd89b091aec66849c6 Pull arm/arm64 perf updates ] * [https://git.kernel.org/torvalds/c/01e9d22638f387b5413163d1030169b6478c09c5 Pull ARM updates ] * [https://git.kernel.org/torvalds/c/c3ce79d6a89e25fe0db1851b1b72e6d0dffc8a66 Pull component updates ] * [https://git.kernel.org/torvalds/c/c9bed1cf51011c815d88288b774865d013ca78a8 Pull xen updates ] * [https://git.kernel.org/torvalds/c/1baa5efbeb6eb75de697f7b5931094be33f12005 Pull KVM updates ] * [https://git.kernel.org/torvalds/c/4f31d774dd5239e563f22ffe1403292414e6f779 Pull UML updates ] * [https://git.kernel.org/torvalds/c/065019a38feab5f2659cbd44080d528f8dff0b00 Pull file locking updates ] * [https://git.kernel.org/torvalds/c/fce205e9da8e063aa1cf3d6583c1a9ed2b82f3f0 Pull vfs copy_file_range updates ] * [https://git.kernel.org/torvalds/c/33caf82acf4dc420bf0f0136b886f7b27ecf90c5 Pull misc vfs updates ] * [https://git.kernel.org/torvalds/c/4d58967783611c5676820b8d47a9b6b0bb456995 Pull GFS2 updates ] * [https://git.kernel.org/torvalds/c/420d12d6ade1e9c02b98fb9a381a17d7ccc7d35e Pull configfs updates ] * [https://git.kernel.org/torvalds/c/60b7eca1dc2ec066916b3b7ac6ad89bea13cb9af Pull UBI/UBIFS updates ] * [https://git.kernel.org/torvalds/c/c597b6bcd5c624534afc3df65cdc42bb05173bca Pull crypto update ] * [https://git.kernel.org/torvalds/c/aee3bfa3307cd0da2126bdc0ea359dabea5ee8f7 Pull networking updates ] * [https://git.kernel.org/torvalds/c/34a9304a96d6351c2d35dcdc9293258378fc0bd8 Pull cgroup updates ] * [https://git.kernel.org/torvalds/c/c17488d06666153a14dd3f21bd10eba58383f6c1 Pull tracing updates ] * [https://git.kernel.org/torvalds/c/67990608c8b95d2b8ccc29932376ae73d5818727 Pull oower management and ACPI updates ] * [https://git.kernel.org/torvalds/c/237f38c3b3ab08eadecc89b7c9647b1cdb996bbe Pull USB updates ] * [https://git.kernel.org/torvalds/c/67ad058d97b8cff441211b791d97e5f776b81210 Pull tty/serial updates ] * [https://git.kernel.org/torvalds/c/39272dde8ffcfd1322209e05f3f8fa4d14f796de Pull staging driver updates ] * [https://git.kernel.org/torvalds/c/4c257ec37bc365614933c7f0a7fe9b0688dfd1e7 Pull char/misc updates ] * [https://git.kernel.org/torvalds/c/d6a322774cb7096ca683fc46ddc9482e02ee6133 Pull dmaengine updates ] * [https://git.kernel.org/torvalds/c/1c5ff2ab7bba6757e7663302c5905e6404de324a Pull input updates ] * [https://git.kernel.org/torvalds/c/ac53b2e053fffc74372da94e734b92f37e70d32c Pull MTD updates ] * [https://git.kernel.org/torvalds/c/50ae833e471fe1a1a906a0342bdaa690e69fcc19 Pull spi updates ] * [https://git.kernel.org/torvalds/c/77a76b04d2be1c45b8fd746b7ef754525029340c Pull second batch of media updates ] * [https://git.kernel.org/torvalds/c/cbd88cd4c07f9361914ab7fd7e21c9227986fe68 Pull s390 updates ] * [https://git.kernel.org/torvalds/c/d080827f850ba4df5b955d5ca8c8c0fc92fe18c0 Pull libnvdimm updates ] * [https://git.kernel.org/torvalds/c/1289ace5b4f70f1e68ce785735b82c7e483de863 Pull first round of SCSI updates ] * [https://git.kernel.org/torvalds/c/f9a03ae123c92c1f45cd2ca88d0f6edd787be78c Pull f2fs updates ] * [https://git.kernel.org/torvalds/c/7fdec82af6a9e190e53d07a1463d2a9ac49a8750 Pull xfs updates ] * [https://git.kernel.org/torvalds/c/b14bf630be972aceb0c8981f9794e612cbb141f7 Pull backlight updates ] * [https://git.kernel.org/torvalds/c/5c43019f25977fb6119dff471d592321ed0d2333 Pull power supply and reset updates ] * [https://git.kernel.org/torvalds/c/cf8d7e3850ee44dc2f0a69405d731af62528a948 Pull MFD updates ] * [https://git.kernel.org/torvalds/c/5339f9d4c2ceccab00b28d65bd5c2b2cd6a3de05 Pull DeviceTree updates ] * [https://git.kernel.org/torvalds/c/32250e4a5fa0b618044afa59fba01093a4bcb14a Pull i2c updates ] * [https://git.kernel.org/torvalds/c/75f26df6ae6f8787fc6198609c8be17400a69e25 Pull NFS client updates ] * [https://git.kernel.org/torvalds/c/c2848f2eef4dd08b0fd2a8eba1694fd8e77ddb67 Pull HID updates ] * [https://git.kernel.org/torvalds/c/0f0836b7eb1b9d14862ee40c7856227a3ead70db Pull livepatching updates ] * [https://git.kernel.org/torvalds/c/875fc4f5ddf35605581f9a5900c14afef48611f2 Merge first akpm patch-bomb ] * [https://git.kernel.org/torvalds/c/1d3671df72e0fe28d7cc686cb432e87c06f4accc Pull UDF fixes and quota cleanups ] * [https://git.kernel.org/torvalds/c/4b43ea2a7c763ab4a1fef69b7c7e2cb091fdea6c Pull regulator updates ] * [https://git.kernel.org/torvalds/c/3c28c9ccafd8bfb30ede7f36bf099b071b977209 Pull md updates ] * [https://git.kernel.org/torvalds/c/cc80fe0eefbbbd7b4e32f631bb2fa639d76af075 Pull nfsd updates ] * [https://git.kernel.org/torvalds/c/37cea93b99d2d89bef3adcb4632d71e1f377c447 Pull VFIO updates ] * [https://git.kernel.org/torvalds/c/f689b742f217b2ffe7925f8a6521b208ee995309 Pull powerpc updates ] * [https://git.kernel.org/torvalds/c/d45187aaf0e256d23da2f7694a7826524499aa31 Pull dmi updates ] * [https://git.kernel.org/torvalds/c/ece6267878aed4eadff766112f1079984315d8c8 Pull clk framework updates ] * [https://git.kernel.org/torvalds/c/e535d74bc50df2357d3253f8f3ca48c66d0d892a Pull documentation updates ] * [https://git.kernel.org/torvalds/c/a016af2e70bfca23f2f5de7d8708157b86ea374d Pull sound updates ] * [https://git.kernel.org/torvalds/c/6606b342febfd470b4a33acb73e360eeaca1d9bb Pull watchdog updates ] * [https://git.kernel.org/torvalds/c/58cf279acac3080ce03eeea5ca268210b3165fe1 Pull GPIO updates ] * [https://git.kernel.org/torvalds/c/0cbeafb245ca568bc0765645aa64f0451b716657 Merge second akpm patch-bomb ] * [https://git.kernel.org/torvalds/c/a4eff16c54886c11972d6396ce8447b99e097343 Pull parsic updates ] * [https://git.kernel.org/torvalds/c/12768c1e2c83b05ea1658470045789a14b6edf4c Pull kselftest updates ] * [https://git.kernel.org/torvalds/c/984065055e6e39f8dd812529e11922374bd39352 Pull drm updates ] * [https://git.kernel.org/torvalds/c/2d663b55816e5c1d211a77fff90687053fe78aac Pull audit updates ] * [https://git.kernel.org/torvalds/c/d43fb9f3c5dff281dd72bea5cd2e91386fdc33a8 Pull fbdev updates ] * [https://git.kernel.org/torvalds/c/c38dec71664dadb15094151f53886abb69f8f9e6 Pull RTC updates ] * [https://git.kernel.org/torvalds/c/c1a198d9235b9e7d6942027374e44f78ebdcb455 Pull btrfs updates ] * [https://git.kernel.org/torvalds/c/d90f351a9bec6af3e8e7cefbbff94072461c3c9a Pull AVR32 updates ] * [https://git.kernel.org/torvalds/c/d05d82f7110b08fd36178a641b69a1f206e1142b Pull arch/tile updates ] * [https://git.kernel.org/torvalds/c/a200dcb34693084e56496960d855afdeaaf9578f Pull virtio barrier rework+fixes ] * [https://git.kernel.org/torvalds/c/99e38df892234aa985185fc776647bad6f9bd7a7 Pull IOMMU updates ] * [https://git.kernel.org/torvalds/c/7c24d9f3b27b198c3c4dfc8327a25fb077a96219 Pull core block updates ] * [https://git.kernel.org/torvalds/c/d36ccdbd1ca1050ad4e7b9b16ced848132533f6e Pull security subsystem update ] * [https://git.kernel.org/torvalds/c/2b4015e9fb335aa6982a68dbe6e4158d6c1b10ee Pull x86 platform driver updates ] * [https://git.kernel.org/torvalds/c/d9569f003cfc0228e132749ae6fd81cb29dc6c70 Pull kbuild updates ] * [https://git.kernel.org/torvalds/c/af75d517a8b83cea88d8039beca1213813eb35f0 Pull kconfig updates ] * [https://git.kernel.org/torvalds/c/90bf353bc1451b71067b12541db08ab7774723eb Pull misc kbuild updates ] * [https://git.kernel.org/torvalds/c/9fa686068a32ddf256df03982b3e3967c18654a8 Pull dmaengine fixes ] * [https://git.kernel.org/torvalds/c/71e4634e00119b2fb8dd0da99b3f5ebbb49cc872 Pull SCSI target updates ] * [https://git.kernel.org/torvalds/c/e3de671dd6784e30821e64f67f854b90b4496a68 Pull asm-generic updates ] * [https://git.kernel.org/torvalds/c/5083c54264d21bf9b8a4766068f51581854d772c Pull ARM SoC cleanups ] * [https://git.kernel.org/torvalds/c/6b5a12dbca7a8681ecb78dbebaedc1f8364ebd10 Pull ARM SoC multiplatform code updates ] * [https://git.kernel.org/torvalds/c/1305eda751d7df3069b1fcb6f62036185acd24a0 Pull ARM SoC platform updates ] * [https://git.kernel.org/torvalds/c/6d1c244803f2c013fb9c31b0904c01f1830b73ab Pull ARM DT updates ] * [https://git.kernel.org/torvalds/c/62c79bb3a99fb46a8624f9c7e86fa5ee2f936360 Pull ARM 64-bit DT updates ] * [https://git.kernel.org/torvalds/c/f9cd69fe5eb6347b4de56458d0378bc0fa44bce9 Pull ARM SoC defconfig updates ] * [https://git.kernel.org/torvalds/c/03d7d12415e3a4791994e566f1245838bc505c6b Pull ARM 64-bit defconfig updates ] * [https://git.kernel.org/torvalds/c/9638685e32af961943b679fcb72d4ddd458eb18f Pull ARM SoC driver updates ] * [https://git.kernel.org/torvalds/c/3549d82279370295a11f1dec0284a9922c903b9a Pull SH driver updates ] * [https://git.kernel.org/torvalds/c/30f05309bde49295e02e45c7e615f73aa4e0ccc2 Pull more power management and ACPI updates ] * [https://git.kernel.org/torvalds/c/278e5acae1321978686e85ca92906054a36aa19b Pull h8300 updates ] * [https://git.kernel.org/torvalds/c/859e762544902c3e09b3f8d994aab80ea5ff5042 Pull pwm updates ] * [https://git.kernel.org/torvalds/c/d43421565bf0510d35e6a39ebf96586ad486f3aa Pull PCI updates ] * [https://git.kernel.org/torvalds/c/5c89e9ea7ef1feaa147325b2ab47a89a147fb903 Pull fuse updates ] * [https://git.kernel.org/torvalds/c/e9f57ebcba563e0cd532926cab83c92bb4d79360 Pull overlayfs updates ] * [https://git.kernel.org/torvalds/c/eae21770b4fed5597623aad0d618190fa60426ff Merge third patch-bomb ] * [https://git.kernel.org/torvalds/c/404a47410c26a115123885977053e9a1a4460929 Expose an interface to allow users to mark several accesses together as] * [https://git.kernel.org/torvalds/c/641203549a21ba6a701aecd05c3dfc969ec670cc Pull block driver updates ] * [https://git.kernel.org/torvalds/c/0a13daedf7ffc71b0c374a036355da7fddb20d6d Pull lightnvm fixes and updates ] * [https://git.kernel.org/torvalds/c/3e1e21c7bfcfa9bf06c07f48a13faca2f62b3339 Pull NVMe updates ] * [https://git.kernel.org/torvalds/c/eadee0ce6fd33defe449c97e671bf83fa230b5de Pull more vfs updates ] * [https://git.kernel.org/torvalds/c/d5ffdf8b4ac6e6db5702ba31870c476d5fa30660 Pull more xfs updates ] * [https://git.kernel.org/torvalds/c/391f2a16b74b95da2f05a607f53213fc8ed24b8e Pull ext4 updates ] * [https://git.kernel.org/torvalds/c/2101ae42899a14fe7caa73114e2161e778328661 Pull more btrfs updates ] * [https://git.kernel.org/torvalds/c/e7cc3edd1758f9aab39f5afcd988ffed55cb26ca Pull sound fixes ] * [https://git.kernel.org/torvalds/c/48162a203e1d0762569d9e7d2de153d9135b35f8 Pull crypto fixes ] * [https://git.kernel.org/torvalds/c/2c9b3ebd5913c2d1371b749a8057ac32972b410d Pull MMC fixes ] * [https://git.kernel.org/torvalds/c/4adea1fd2773a88c30ecd77d4e5d256fa40908e2 Pull more SCSI updates ] * [https://git.kernel.org/torvalds/c/5430dfe90db8a4443fa7f9b62c77e82f768dd797 Pull more input updates ] * [https://git.kernel.org/torvalds/c/79d245327f61ff21e7b9427c61fded5442734233 Pull ARM SoC support for Tegra platforms ] * [https://git.kernel.org/torvalds/c/b82dde0230439215b55e545880e90337ee16f51a Pull ia64 copy_file_range syscall update ] * [https://git.kernel.org/torvalds/c/20c759ca98468d96d1fff8bd5e6753f458dbbfbd Merge small final update ] * [https://git.kernel.org/torvalds/c/cc673757e24d018d64ff8038e28835db1e2902c4 Pull final vfs updates ] * [https://git.kernel.org/torvalds/c/b3e27d5d4a29bcc8e057b496d5ef5194addaaac0 Pull NTB updates ] * [https://git.kernel.org/torvalds/c/048ccca8c1c8f583deec3367d7df521bb1f542ae Pull rdma updates ] * [https://git.kernel.org/torvalds/c/772950ed21c36f4157ff34e7d10fb61975f64558 Pull SMB3 fixes ] * [https://git.kernel.org/torvalds/c/00e3f5cc305c8a056a22cecedab3a71d59dae1fc Pull Ceph updates ] * [https://git.kernel.org/torvalds/c/c52cb4311f20538fcb69420e55a19ac622546a08 Pull 9p updates ] * [https://git.kernel.org/torvalds/c/81f05fee8c063cfc1614ddba1ce88cb1129f263d Pull thermal management updates ] * [https://git.kernel.org/torvalds/c/e1c10879ed59436cde537b723545430b04d4dec0 Pull x86 platform driver updates ] * [https://git.kernel.org/torvalds/c/e2464688b59c6ae9928f385dabf5355e30cff298 Pull MIPS updates ] = Other news sites = * LWN's 4.5 merge window [https://lwn.net/Articles/671470/ 1], [https://lwn.net/Articles/672344/ 2] and [https://lwn.net/Articles/673312/ 3] * Phoronix [http://www.phoronix.com/scan.php?page=article&item=linux-45-features The Many New Features & Improvements Of The Linux 4.5 Kernel]