LWN:7.1 合并窗口的前半部分

作者:*Jonathan Corbet*

2026 年 4 月 16 日 

随着 7.0 内核的 发布,7.1 合并窗口 (merge window) 于 4 月 12 日开启。自那时起,已有 3,855 个 非合并变更集 (non-merge changesets) 被拉入了用于下一个发行版的 主线 (mainline) 仓库中。因此,这个合并窗口才刚刚开始,但已经有相当多有趣的工作进入了主线。 

到目前为止,合并的一些更有趣的变化包括: 

特定架构相关

  • amd-pstate

     电源管理子系统增加了对动态性能偏好的支持,根据系统是运行在交流电 (AC) 还是电池供电下来改变系统的电源管理行为。有关文档请参阅 此提交。

  • 移除了一些陈旧且未使用的 486 子架构(特别是 M486、M486SX 和 ELAN)。

  • Intel 的 灵活返回与事件传递 (Flexible Return and Event Delivery, FRED) “定义了新的控制流转换(通常在特权级之间),以取代现有的转换(如通过 IDT 进行的事件传递和使用 IRET 的返回)”。此特性自 6.9 版本起就已得到支持,但默认处于禁用状态;从 7.1 开始, FRED 将改为默认启用。

  • 增加了对 NVIDIA Tegra410 内存延迟性能监控单元的支持。详情请参阅 此提交 和 此提交 中添加的文档。

  • Arm 9.6 LSUI 特性增加了允许内核访问用户空间内存的指令,而无需先禁用“ 特权访问永不 (privileged access never) ”模式;7.1 使用这些指令来加速 futex 操作。

  • Arm 的 内存分区与监控 (Memory Partitioning and Monitoring, MPAM) 特性的支持得到了改进并暴露给了用户空间。更多信息请参阅 Documentation/arch/arm64/mpam.rst。

  • PowerPC 系统上的 BPF 即时编译器 (just-in-time compiler, JIT) 得到了改进,支持私有栈、 fsession 支持、间接跳转等。

  • s390 架构也获得了 BPF fsession 支持。

核心内核

  • clone3()

     系统调用新增了三个标志。 CLONE_AUTOREAP 会使进程在退出时自动收割自己,而不是变成 僵尸进程 (zombie) 并等待父进程来处理。 CLONE_NNP 为新创建的进程设置了 不允许获取新特权标志 (no new privileges flag) 。而 CLONE_PIDFD_AUTOKILL 将导致在给父进程的 pidfd 关闭时,立即杀死创建的子进程。有关所有这些标志的更多信息,请参阅 这篇文章。

  • 对于每个已加载的模块,在其关联的 /sys/module 目录中都有一个新文件 import_ns ;它显示了该模块导入了哪些 符号命名空间 (symbol namespaces) 。

  • io_uring 子系统 已 获得 BPF 支持,允许将主分发循环替换为 BPF 程序。

  • 高分辨率定时器 (high-resolution-timer) 核心已经进行了实质性的重写,以获得更好的性能;详情请参阅 此合并日志。除此之外,这些改进意味着调度器可以使用高分辨率定时器,而相对于使用粗粒度定时器的调度器来说没有性能损失。

  • 向内核添加 代理执行 (proxy execution) 的项目仍在继续,合并了 捐赠者迁移 (donor migration) 补丁集的一部分,这最终将实现 捐赠者任务 (donor tasks) 在 per-CPU 之间的移动,以便于向 锁持有者 (lock holder) 捐赠 CPU 时间。这项工作尚未完成,但正在接近目标。

  • BPF 验证器 (BPF verifier) 中跟踪 栈存活性 (stack liveness) 的方式发生了变化,从而为许多程序带来了更快的验证速度。更多信息请参阅 此合并日志。

文件系统与块 I/O

  • fsmount()

     的新选项 FSMOUNT_NAMESPACE 将导致创建一个新的命名空间来容纳新挂载的文件系统。 clone3() 和 unshare() 系统调用也获得了返回仅包含单个 nullfs 挂载的新挂载命名空间的标志。

  • 内核现在可以在文件系统层级生成和验证 T10 保护信息 (T10 protection information) 。块设备层已经具备此功能一段时间了,但将其移至文件系统层提高了效率(特别是对于读取操作),并将有助于最终将此支持添加到 io_uring 中。

  • ublk 用户空间块驱动程序获得了对 零拷贝 I/O (zero-copy I/O) 的支持; 此提交 包含了一些关于如何使用此特性的文档,而 这一篇 则提供了一个针对它的自测程序。

  • SED-OPAL 是自加密块设备的规范。通过一些完全没有文档记录的用于单用户模式支持的 ioctl() 操作,对 SED-OPAL 的支持得到了增强;概述请参阅 此补丁发布。

  • Btrfs 停机 (shutdown) 操作在 6.19 中添加,该操作会停止所有 I/O 操作,直到目标文件系统被卸载;在 7.1 中,它将失去“实验性”状态,成为通用可用功能。

  • exfat 文件系统现在支持使用 fallocate() 进行预分配。

  • CIFS 客户端文件系统现在支持使用 O_TMPFILE 选项创建临时文件。

硬件支持

  • 网络

     :Spacemit DWMAC 以太网控制器、Nuvoton MA35 系列以太网控制器,以及 Microchip PIC64-HPSC/HX MDIO 接口。

网络

  • 与通过文件系统访问不同,直接通过 socket() 创建的 Unix 域套接字 (Unix-domain sockets) 传统上不支持 扩展属性 (extended attributes) 。从 7.1 开始,这些套接字增加了对 user.* 扩展属性空间的支持。如 此合并日志 所述,该特性的主要驱动用例是能够使用扩展属性对套接字进行注释,以记录端点预期使用的协议。

  • UDP Lite 支持已被移除;由于很明显没有人真正使用这一特性,这一举动已在 2023 年宣布。更多信息请参阅 此合并日志。

  • 将 IPv6 支持构建为模块的能力已被移除;该协议要么直接构建进内核,要么完全禁用。

安全相关

  • 在 6.12 版本中 增加 了一组配置选项,用于控制对 /proc/=/=PID=/=/mem 文件 的访问是否可以覆盖内存权限;默认情况下允许这种覆盖,因为这是内核传统上的做法。不过,从 7.1 开始,默认值将切换为 PROC_MEM_FORCE_PTRACE ,这意味着权限可以被活动的 ptrace() 用户覆盖,但除此之外不行。

  • 增加了一组新的安全模块钩子,旨在促进 叠加文件系统 (overlay filesystems) 策略的实现。相关文档显然过于机密,无法包含在内核中,但 此变更日志 给出了这些钩子的概述。

  • 还有一个 新钩子 用于控制对文件系统中 Unix 域套接字的访问。 Landlock 安全模块使用此钩子为这些套接字 提供新的策略选项。

  • 不断增长且精心维护(但缺乏文档记录)的 libcrypto 库增加了对许多新算法的支持,该库比内核旧的加密子系统提供更快、更简单的加密算法访问方式;列表请参阅 此合并消息。

内核内部变更

  • inode

     结构的 i_ino 字段现在在所有架构上都是 64 位宽。

  • 内核二进制文件中表示导出给模块的符号的方式 已更改 为更高效的格式。

  • 构建内核所需的最低 Rust 版本现在是 1.85.0(以及 bindgen 0.71.1);这一变化遵循了 在 2025 年维护者峰会上做出的决定,即要求使用最新的 Debian stable 发行版提供的版本。有关其他 Rust 相关的变更,请参阅 拉取请求。

  • 用于从代码注释中构建内核文档的 kernel-doc 工具已经进行了显著的重写,使用了正式的 C 语言分词器,并减少了那些复杂的正则表达式。

  • 在锁的正确使用方面有了一些改进,包括为 rwsems、mutexes 和 rtmutexes 增加了 上下文分析 (context analysis)(以前称为 能力分析 (capability analysis))的支持。

截至本文撰写时,仍有近 9,000 个非合并变更集等待从 linux-next 移动到主线,因此请期待在本次开发周期中看到更多有趣的素材。如果按照通常的时间表,合并窗口预计将于 4 月 26 日关闭;在那之后请关注所有这些变更集带来了什么。 

LWN 评论概述:

有评论针对文中提到的“精心但不加记录的 libcrypto 库”提出了不同意见,指出所有新函数实际上都有 kerneldoc 注释。由于这些库函数仅供内核内部使用,并遵循标准惯例(如 KUnit),因此除了 kerneldoc 本身之外,并没有太多额外信息需要补充。作者推测,这可能是因为这些 kerneldoc 没有在 Documentation/ 中包含对应的指令,导致它们没有出现在 HTML 文档中,从而被忽略了。 

关注了就能看到更多这么棒的文章哦~   全文完
 LWN 文章遵循 CC BY-SA 4.0 许可协议。 

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值