Linux 4.5 is out. Let’s see its prominent features.
A new tool called UBSAN checks a running kernel for various types of undefined behaviour that can lead to obscure bugs.
The new CONFIG_IO_STRICT_DEVMEM option, which blocks access to memory (via /dev/mem) claimed by device drivers, turned out to break booting on some systems, so it is now off by default.
The ARM multiplatform work that aims to build a single ARM kernel that can boot on a wide variety of processors has reached an important milestone with the merging of work to bring a number of minor platforms into the fold. This branch is the culmination of 5 years of effort to bring the ARMv6 and ARMv7 platforms together such that they can all be enabled and boot the same kernel.
The filesystems in user space (FUSE) subsystem has added support for the SEEK_HOLE and SEEK_DATA options to the lseek() system call.
The epoll_ctl() system call supports a new flag, EPOLLEXCLUSIVE, that causes epoll_wait() to only wake one process when a file descriptor becomes ready. See this article for a description of this option and the use case for it.
Direct-access (“DAX”) mappings now work properly with the msync() and fsync() system calls.
The ext4 filesystem has gained “project quota” support, wherein dispersed files can be assigned to the same “project” and given their own quota. The feature is rigorously undocumented, but some information be found in the header of this patch posting.
The implementation of the XFS XFS_IOC_FSSETXATTR and XFS_IOC_FSGETXATTR ioctl() commands has been moved up to the virtual filesystem level, and an implementation for the ext4 filesystem has been added. This operation, also severely undocumented, allows the querying (and setting) of various file attributes, including immutability, whether writes should always be synchronous, exclusion from backups, and more. See the defines near the top of this commit for the list of supported attributes.
The Ceph filesystem now has support for asynchronous I/O.
So the top features of this release are:
– Copy offloading with new copy_file_range(2) system call
– Experimental PowerPlay supports brings high performance to the amdgpu driver
– Btrfs free space handling scalability improvements
– Support for GCC’s Undefined Behavior Sanitizer
– Forwarded Error Correction support in the device-mapper’s verity target
– Add MADV_FREE flag to madvise(2)
– Better epoll multithread scalability
– cgroup unified hierarchy is considered stable
– Performance improvements for SO_REUSEPORT UDP sockets
– Proper control of socket memory usage in the memory controller
Read the full changelog.