关注了就能看到更多这么棒的文章哦~
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 深度文章以及开源社区的各种新近言论~

772

被折叠的 条评论
为什么被折叠?



