LWN:6.17 合并窗口第一部分!

关注了就能看到更多这么棒的文章哦~

6.17 Merge window, part 1

By Jonathan Corbet
July 31, 2025
Gemini flash translation
https://lwn.net/Articles/1031713/

截至本文撰写之时,在 6.17 合并窗口 (merge window) 期间,已有超过 4,000 个非合并变更集 (non-merge changesets) 被拉取到主线 (mainline) 仓库中。Linus Torvalds 在宣布合并窗口开启时,就曾表示由于个人日程繁忙,他此次可能会比往常更快地拉取变更;目前来看,这一预告已在一定程度上得到印证。迄今为止已合并的变更主要集中在核心内核 (core-kernel) 和文件系统 (filesystem) 工作上;详情请继续阅读。

迄今为止已合并的最重要变更包括:

架构特定 (Architecture-specific)

  • nolibc 库 (nolibc library) 现已支持 SuperH、x32 以及 MIPS n32 和 n34 架构。

  • 针对 x86 架构的其余 x86 攻击向量控制工作 (x86 attack-vector controls work) 已被合并;它能更好地控制内核中应启用哪些针对硬件漏洞的缓解措施。更多信息请参阅 Documentation/admin-guide/hw-vuln/attack_vector_controls.rst。

  • Arm 系统现在可以在 perf 事件子系统 (perf events subsystem) 中使用 Arm v9.2 分支记录缓冲区扩展 (branch record buffer extension)。

  • 实时补丁 (Live patching) 现已支持 64 位 Arm 系统。

  • 系统调用跟踪点 (System-call tracepoints) 现已在用户模式 Linux (User-mode Linux) 内核中得到支持。

核心内核 (Core kernel)

  • 6.16 中添加的 核心转储套接字 (core-dump socket) 功能已得到增强,其协议允许核心转储服务器 (core-dump server) 控制如何为每个任务 (task) 处理转储。此提交描述了该协议的工作原理和可用选项。另有一个实验性服务器实现 (experimental server implementation) 可用于测试此接口。

  • pidfd 功能已进行了多项更改。与 pidfd 关联的内核内部信息 (kernel-internal information) 现在绑定到进程本身而非 pidfd,允许其在同一进程的多次打开之间继续存在。现在用户空间 (user space) 可以为 pidfd 附加扩展属性 (extended attributes);这些属性也将存在于进程的生命周期内。pidfd 的文件句柄 (file handles) 现在可以在不需要包含文件系统 (containing filesystem) 的文件描述符 (file descriptor) 的情况下打开(使用 open_by_handle_at())。此合并消息提供了有关这些变更的更多信息。

  • 新的 bpf_cgroup_read_xattr() kfunc 允许 BPF 程序从控制组文件系统 (control-group filesystem) 中读取扩展属性。

  • 内核的计时系统 (timekeeping system) 引入了“辅助时钟 (auxiliary clocks)”的概念,它们与正常的系统时钟没有任何关联。此前,所有时钟都以相同的速率前进,仅在偏移量 (offsets) 上有所不同;辅助时钟则按照自己的节奏运行。文档稀缺,但此合并消息中提供了一些信息。

  • 调度器 (scheduler) 已移除对单处理器配置 (uniprocessor configurations) 的支持;即使是单处理器机器也将运行为 SMP 系统 (SMP systems) 构建的内核。

  • 旨在缓解优先级反转问题 (priority-inversion problems) 的 代理执行 (proxy execution) 的初步支持已合并。代理执行允许等待锁 (lock) 的任务将其执行上下文 (execution context) 捐赠给锁持有者 (lock holder),从而加快该锁的释放;在 6.17 中,它仅在两个任务都在同一个 CPU 上运行时才有效。

文件系统和块 I/O (Filesystems and block I/O)

  • Btrfs 已获得 large-folio 支持,尽管在此版本中仍被视为实验性功能。

  • Btrfs 文件系统的碎片整理 (defragmentation) 现在对碎片整理后的 extent 中压缩 (compression) 的使用提供了更多控制。

  • EROFS 文件系统现在支持元数据压缩 (metadata compression)。

  • NFS 服务器 (NFS server) 可以向以只写模式 (write-only mode) 打开文件的客户端 (clients) 提供写入委托 (write delegations)。根据合并消息:“我们预计这将加速一些有趣的边缘情况 (corner cases)。”

  • ext4 文件系统已增加了对带有 RWF_DONTCACHE(最初提议为 RWF_UNCACHED)标志 (flag) 的缓冲 I/O (buffered I/O) 的支持,这将导致数据在操作完成后从页缓存 (page cache) 中丢弃。

  • /proc 文件系统根目录的 inode 号 (inode number) 现在是内核 ABI (应用程序二进制接口) 的公认部分;它被称为 PROCFS_ROOT_INO。用户空间可以检查此编号,以确保 /proc 文件未被攻击者通过绑定挂载 (bind mount) 替换;更多信息请参阅此合并消息。

  • fallocate() 系统调用 (system call) 有了一个新选项 FALLOC_FL_WRITE_ZEROES,它以最有效的方式将分配范围 (allocated range) 初始化为零。对于最新的固态设备 (solid-state devices),这种初始化可以在设备内部高效完成,无需 I/O。有关更多信息,请参阅此变更日志 (changelog);ext4 文件系统现在支持此操作。

  • 两个新的系统调用,file_getattr() 和 file_setattr(),支持对文件 inode 属性 (inode attributes) 的操作。有关概述和基本手册页 (manual page),请参阅此提交。对实际支持的操作的文档很少,但此 XFS 手册页提供了很好的概述。

  • “pktcdvd”数据包写入光学媒体驱动程序 (packet-writing optical-media driver) 自 2016 年以来已被标记为弃用 (deprecated)。2023 年曾尝试将其移除,但被恢复 (reverted)。在 6.17 中它再次被移除,并且这次很可能会保持移除状态。

  • 迄今为止,bcachefs 拉取请求 (pull request) 尚未被处理。

硬件支持 (Hardware support)

  • 时钟 (Clock)

    : 基于 Raspberry Pi RP1 的时钟。

  • GPIO 和引脚控制 (GPIO and pin control)

    : Apple Mac SMC GPIO 控制器和 Raspberry Pi RP1 引脚控制器。

  • 工业 I/O (Industrial I/O)

    : Analog Devices AD4080 高速模数转换器、Analog Device AD7405 和 AD4170-4 模数转换器、ChromeOS EC 活动传感器以及 Nicera D3-323-AA 被动红外传感器。

  • 其他 (Miscellaneous)

    : HiSilicon uncore 频率调整控制器、Analog Devices ADP558x 键盘、Apple silicon 系统管理控制器、Apple SMC 重置/电源关闭控制器、Raspberry Pi 7 英寸触摸屏面板 V2 稳压器、Argon40 Fan HAT 控制器、Lenovo GameZone WMI 接口、Intel 平台监控技术接口、Qualcomm Milos 互连、Renesas RZ/T2H 串行接口、Canaan Kendryte K230 SoC 重置控制器、NXP IMX Secure AHB to IP Slave bus (AIPSTZ) 桥、Allwinner A523 PCK-600 电源域控制器、Loongson-2K SD/SDIO/eMMC 主机接口以及 AMD 异构核心硬件反馈接口。

  • 音频 (Sound)

    : Richtek RTQ9124 单声道 D 类放大器。

  • SPI

    : Amlogic SPISG 控制器和 Renesas RZ/V2H RSPI 控制器。

安全相关 (Security-related)

  • 新的 FS_IOC_GETLBMD_CAP ioctl() 命令允许用户空间检索适用于给定文件的完整性保护 (integrity protections) 信息。在 6.17 中,它仅受块设备 (block devices) 支持,但计划在文件系统内部也支持它。有关此新 API (应用程序接口) 的概述,请参阅此提交。

  • 内核现在可以使用 Clang 21 提供的栈深度跟踪 (stack-depth tracking) 来实现内核栈擦除 (kernel-stack erasing),这与 STACKLEAK 通过 GCC 提供的方式类似。

  • /sys/fs/selinux/user API 的弃用仍在继续;尝试访问它将导致五秒延迟以及记录的警告 (logged warning)。

内核内部变更 (Internal kernel changes)

  • file_operations 结构 (structure) 中长期存在的 mmap() 方法正逐渐被弃用,转而支持 mmap_prepare(),后者减少了出现错误 (bugs) 和安全问题 (security problems) 的机会。在 6.17 中,许多文件系统正在转向这个新接口 (interface);有关这项工作及其动机 (motivation) 的描述,请参阅此合并消息。

  • 内核的 CRC (循环冗余校验) 代码已进行了大量重构 (reworked);更多信息请参阅此合并消息。此外,还有用于 SHA-1 和 SHA-2 生成的新 API。

  • 新的 Rust 抽象 (abstractions) 已添加到稳压器子系统 (regulator subsystem)、固件属性 (firmware properties)、I/O 资源 (I/O resources) 和 I/O 内存 (I/O memory) 中。

预计 6.17 合并窗口将于 8 月 10 日关闭,但 Torvalds 已明确表示,他希望在该日期之前看到所有重要的拉取请求。鉴于截至本文撰写之时,linux-next 中仍有超过 7,500 个提交,显然还有相当一部分请求尚未被处理。与往常一样,一旦合并窗口关闭,LWN 将提供剩余变更的摘要。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

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

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值