Lista para version 5.15

Linux 5.15 was released

Summary: This release adds a new NTFS read-write implementation; support for putting all the processes within a cgroup in the SCHED_IDLE scheduling class; Btrfs support for fs-verity and id mapping; support for the DAMON, which allows to monitor memory access patterns of specific processes; a new in-kernel SMB 3 server; a new process_mrelease(2) system call to let service managers release process resources faster; support for migrating memory pages to persistent memory instead of discarding them; support in the Device Mapper for IMA-based remote attestation; support for avoiding scheduling 32 bits tasks on 64-bit only CPUS in systems with mixed CPUs. As always, there are many other features, new drivers, improvements and fixes.

New NTFS file system implementation

The Linux kernel already has a NTFS implementation, but it has severe limitations (like being read-only), which is why Linux users usually use the userspace ntfs-3g implementation. This release incorporates a new and fully functional NTFS implementation contributed by Parangon Software. This implementation supports NTFS file system versions up to 3.1, normal/compressed/sparse files and journal replaying, plus other features that will be added in the future.

ksmbd, a in-kernel SMB 3 server

ksmbd is a new kernel module which implements the server-side of the SMB 3 protocol. The target is to provide optimized performance, GPLv2 SMB server, and better lease handling (distributed caching). The bigger goal is to add new features more rapidly (e.g. RDMA aka "smbdirect", and recent encryption and signing improvements to the protocol).

This is not meant to replace Samba, which is much broader in scope -tools, security services, LDAP, Active Directory Domain Controller, cross-platform support- but rather be an extension to allow better optimizing for Linux and have better performance and feature integration in some cases.

Migrate memory pages to persistent memory in lieu of discard

In systems with some DRAM and persistent memory, once DRAM fills up, reclaim will start and some of the DRAM

contents will be thrown out. In this release, pages are migrated to persistent memory instead of just being dropped, which improves performance in many benchmarks run in these kind of systems.

Recommended LWN article: Top-tier memory management

Btrfs support for fs-verity and id mapping

In this release, Btrfs has added support for fs-verity

It also adds support for id-mapped

DAMON, a data access monitor

DAMON, which stands for Data Access MONitor, is a mechanism to monitor the memory access pattern of specific user-space processes. That is, it can tell you which parts of the memory of a process are being accessed all the time,and which ones are not being used at all. It is lightweight, both in terms of memory usage and CPU usage while analyzing the target process. It is one of the pieces of a project called Data Access-aware Operating System.

DAMON aims to be used by other parts of the kernel that may be merged in the future, but it also can provide information to userspace. You can use it to profile a program and obtain its access heathmap, using the complementary tool damo

Introduce process_mrelease(2) system call

In modern systems it's not unusual to have a component monitoring memory conditions of the system and tasked with keeping system memory pressure under control, and killing non-essential processes to free up memory for more important ones. Examples of this are Facebook's OOM killer daemon called oomd and Android's low memory killer daemon called lmkd.

Killing and freeing the resources of a process can be delayed for a long time for various reasons. The new process_mrelease(2) system call allows to release the memory of a dying process from the context of the caller. This way the memory is freed in a more controllable way with CPU affinity and priority of the caller. The workload of freeing the memory will also be charged to the caller.

Recommended LWN article: Hastening process cleanup with process_mrelease()

Real-time locking progress

The merge of the real-time set of patches continues making progress in every release. In this release, one of the most important pieces, the bulk of the locking code, has been merged. When PREEMPT_RT is enabled, the following locking primitives are substituted by RT-Mutex based variants: mutex, ww_mutex, rw_semaphore, spinlock and rwlock.

The SLUB slab allocator has also been modified to better deal with PREEMPT_RT.

cgroup support for SCHED_IDLE

This release adds support for putting all the tasks within an entire cgroup under the SCHED_IDLE class of the task scheduler, which means that they will only run if there are not other tasks waiting to run. A key difference with normal tasks set individually to SCHED_IDLE is that tasks within a cgroup set to SCHED_IDLE maintain their relative weights.

Device Mapper IMA-based remote attestation

This release adds the necessary infrastructure for IMA

Support for asymmetric scheduling affinity

Some architectures, in particular ARM, have configurations where some CPUs support legacy 32 bits apps, but some CPUs are 64-bit only. This release adds support for scheduling 32 bits tasks exclusively in the CPUs that support legacy 32 bits tasks.