Linux 7.0 and What Changed in the Kernel After Another Development Cycle

The development of the Linux kernel continues as usual. Every few months, a fresh version appears with fixes and new features. This time, Linus Torvalds presented release 7.0, which incorporates thousands of community edits. The changes affected various parts of the system: from error handling in file systems to rules for using AI assistants when preparing patches. Let's delve into it.

First — about the usual details of the release. Linus Torvalds announced the release of the new version after the standard two-month cycle. The release included 15,624 fixes prepared by 2,477 developers. The size of the patch is 56 MB, and the changes affected 18,053 files. For comparison: in the previous release, there were slightly more patches, but the size was smaller.

The statistics on the distribution of fixes look familiar. About half of all modifications pertain to device drivers, another 14% are related to the networking stack. Architecture-dependent code accounted for 11%, file systems — approximately 5%, and internal kernel subsystems — about 3%. These figures show that the work was evenly distributed across all areas.

File Systems and I/O Subsystem

Among the notable innovations in data handling is the fserror infrastructure. Now, error messages in different file systems no longer appear as a set of disparate signals. The kernel consolidates them into a unified format and passes them to user space via fsnotify, which simplifies the processing and diagnosis of failures. Previously, each storage system behaved differently, and the new infrastructure brings everything to a common denominator.

In XFS, the focus has been on observability: now events related to the state of the file system can be tracked directly from user space. The kernel provides a descriptor for subscribing to errors and failures, and additionally offers a separate service that can automatically respond to such events and initiate recovery.

A new approach to handling moved data has appeared in Btrfs. Instead of immediately updating all structures, the kernel temporarily stores the correspondence between old and new addresses and resolves it upon access. This mechanism reduces the risk of inconsistency and creates a foundation for more flexible data management in the future.

Btrfs has also implemented support for direct I/O in cases where the block size exceeds the page size of memory. This allows bypassing certain limitations and increases efficiency on modern systems. At the same time, a completely new filesystem, nullfs, was introduced. It is always empty, does not store any data, and does not allow changes. Its role is to serve as a placeholder for the root filesystem during the boot stage. Real partitions are mounted over nullfs, and then pivot_root is called, which simplifies the system initialization process and eliminates the need to manually clean the initramfs.

In filesystems, support for notification locks lease has also been moved to the category of separately enabled options. By default, this mechanism is now turned off because some filesystems, such as 9p and cephfs, were not initially ready for it. In Ext4, extent caching and delayed block allocation have been improved, and a parameter has been added to sysfs to control the delay of repeated error warning messages. The performance of simultaneous direct writes to multiple files has also increased. In EROFS, the LZMA algorithm for compression is now enabled by default, while DEFLATE and Zstandard are no longer considered experimental. Additionally, shared usage of page cache entries for identical files across different instances of this system has been implemented.

Memory, Scheduler, and System Services

In the memory subsystem, the integration of the swap table mechanism has been completed. It significantly accelerates paging by reducing competition for the cache, improving search efficiency, and decreasing fragmentation. In the test with redis-benchmark and BGSAVE, the number of processed requests increased by 22%. This backend is now used instead of the old XArray for caching paging.

The task eviction mode PREEMPT_LAZY has been made the default for arm64, loongarch, powerpc, riscv, s390, and x86 architectures. It retains full eviction for real-time tasks but delays eviction of regular processes until the tick boundary. This helps bring performance closer to configurations with voluntary eviction, minimizing drops for everyday workloads. The number of modes has been reduced to two — PREEMPT_FULL and PREEMPT_LAZY.

Support for Rust has been moved from experimental status to core kernel features. However, it remains disabled by default and does not add Rust as a mandatory dependency for building. This is an important step that paves the way for gradual adoption of the language in drivers and other components without drastic changes in the build process.

The rules for the use of AI assistants in development have been officially approved. The responsibility for such changes lies entirely with the developer; thus, the Signed-off-by signature can only be placed by a person. Moreover, the mere fact of using an assistant must be explicitly indicated in the patch metadata.

Network Stack, Security, and Virtualization

In the networking subsystem, emphasis has been placed on more precise traffic and input-output control: improvements have been made in handling overload signals, and filtering mechanisms have been added for io_uring, allowing for finer control of operations in high-load scenarios.

For kernel module encryption, integration of the post-quantum algorithm ML-DSA has been added. It replaces outdated approaches and provides protection even against future threats from quantum computers. At the same time, initial support for Wi-Fi 8 has appeared, enabling future work with new wireless communication standards.

There have also been useful changes in virtualization and security. For example, in nfsd, the experimental ability to use POSIX ACL has been enabled, and dynamic adjustment of the thread pool based on load has been added. The blocking of exports through NFS for specialized pseudo-filesystems, such as pidfs and nsfs, has also received improvements.

Hardware Support and Other Improvements

The driver subsystem has been significantly enhanced in key areas. Support for ntfs3, developed by Paragon Software, has been further advanced: the implementation of iomap simplifies work with low-level file operations, modes SEEK_DATA and SEEK_HOLE have been added for more accurate navigation through sparse files, and delalloc allows for more efficient data writing. In F2FS, a step has been taken to improve memory efficiency by transitioning to large pages, which reduces overhead when handling large volumes of data.

At the hardware support level, changes are distributed across many platforms. In architectures like arm64 and riscv, compatibility with new generations of processors has been improved, and code related to power management and device initialization has been updated. The graphics stack has also not gone unnoticed: updates to amdgpu, Intel, and NVIDIA drivers include both fixes and stability improvements under prolonged load. At the same time, the adaptation of the kernel for modern single-chip systems continues, where not only performance but also the correct operation of embedded controllers and peripherals are important.

Overall, the release looks quite logical. It gathers numerous targeted improvements that collectively make the kernel more stable and user-friendly in everyday work. Have you already tried the new version? What do you think? Share your thoughts in the comments.

Comments