Linux 7.3-rc2 发布:现在值得测试的不是新功能,而是回归

Linux 7.3-rc2 在北京时间 9 月 7 日凌晨发布。它不是稳定版,也不是一次面向普通用户的功能升级,而是 Linux 7.3 开发周期中的第二个候选版本。

对大多数桌面用户来说,现在没有必要为了追新版本替换正在使用的内核。对内核开发者、发行版维护者、硬件驱动作者和运行自定义内核的团队来说,rc2 却是一个值得拿来做回归测试的时间点:第一轮合并已经过去,接下来更重要的是确认驱动修复、并发修复和子系统调整没有破坏已有行为。

rc2 到底意味着什么

Linux 的开发过程通常先进入合并窗口,接纳新功能和大块改动;合并窗口关闭后,内核进入候选版本阶段。候选版本主要用于修复回归、完善边界情况和稳定已有代码,版本号从 -rc1-rc2 逐步向正式版靠近。

这次 v7.3-rc2v7.3-rc1 相隔约一周。kernel.org 将它标记为 mainline 测试版本,并提供了完整源码包,以及从 v7.3-rc1v7.3-rc2 的增量补丁。Linux 主仓库的比较结果显示,这一周合入了 681 个提交;这个数字描述的是代码集成规模,不等同于 681 个面向用户的新功能。

因此,读 rc2 的正确方式不是问“它增加了什么杀手级特性”,而是问:

  • 哪些硬件和子系统的旧行为刚刚被修正?
  • 我的工作负载是否覆盖这些变更的边界?
  • 如果出现回归,我能否把问题缩小到某个版本或提交?

从比较结果里能看到哪些修复方向

候选版本没有一份像稳定版那样面向普通用户的功能清单。结合内核主线的比较记录,可以看到本轮包含存储、跟踪、BPF、音频、显示和文件系统等方向的修复。下面几类变化很适合作为测试切入点。

存储:限制 NVMe 请求,避免 PRP 链越界

megaraid_sas 驱动修正了 NVMe 请求大小与 PRP 链帧容量之间的关系。此前,块层的默认最大请求大小变化后,一次请求可能需要更多 PRP 表项;当这些表项超过驱动分配的帧边界时,可能出现越界写入。

这类问题有两个麻烦之处。第一,硬件和请求大小必须同时满足条件,普通磁盘读写不一定马上触发。第二,越界区域如果刚好映射到可写内存,系统可能不会立刻崩溃,而是先悄悄破坏相邻对象。

如果团队使用 MegaRAID 控制器、NVMe 后端或高吞吐存储,测试不能只做一次启动和简单的文件复制。更有价值的组合是:

  • 大块顺序读写与随机读写;
  • 多队列并发 I/O 和长时间压力测试;
  • 文件系统检查、重启和设备异常恢复;
  • 对比 rc1、rc2 与当前稳定内核的 dmesg、I/O 错误和延迟。

这类修复也提醒驱动作者,块层默认值变化后,驱动内部对请求大小的假设必须重新检查。一个上游看似通用的容量调整,可能让下游硬件路径暴露出此前没有遇到的边界。

跟踪:初始化顺序和对象生命周期仍然是高风险区域

本轮比较中还包含 ftrace 初始化同步以及 trace 选项文件引用生命周期方面的修复。内核跟踪系统会被调试工具、性能分析器和生产诊断脚本同时使用,许多问题只在“一个线程打开文件、另一个线程移除实例”的并发场景中出现。

这类修复的测试重点不应只是“能不能打开 tracing”。更适合做压力循环:反复创建和删除 trace 实例,同时启停事件、读取 options 文件,并让多个线程并行执行。测试结束后还要检查是否出现 use-after-free 报告、锁依赖告警、软锁死或异常的引用计数。

内核调试功能有一个常见误区:平时不用,就以为相关代码不会影响系统。实际上,跟踪接口常常与调度、锁和对象生命周期相连;即使业务程序没有主动启用它们,内核配置和模块加载方式仍可能改变执行路径。

BPF:验证器修复不能只看“程序能否加载”

BPF 相关提交修正了回溯分析在处理回调时清理外层寄存器状态的问题,并补充了对应的自测试。BPF 验证器的工作不是运行一段程序后再观察结果,而是在加载前分析寄存器、栈和控制流,证明程序满足安全约束。

验证器的一个小错误,可能导致两种相反的结果:合法程序被错误拒绝,或者本来应该保留的状态被错误清除,导致分析结果不可靠。后者尤其需要谨慎,因为“程序成功加载”并不等于验证器覆盖了所有应有的路径。

使用 BPF 的团队应把自测试、实际程序和内核版本一起纳入矩阵。可以重点覆盖 bpf_loop()、回调、尾调用、map 访问和不同 JIT 架构,观察加载结果、验证日志和运行时行为是否一致。不要只在 x86_64 上通过后就认为其他架构也没有问题。

音频与显示:硬件回归往往只发生在特定组合

候选版本还包含 Realtek HDA 针对特定 Acer Aspire A515-57G 机型的冷启动耳机检测修复,以及 AMD 显示混合模式属性相关调整。这种补丁看起来很窄,却是内核维护中很重要的一类工作:同一套驱动代码在不同 PCI 标识、固件版本、启动顺序下可能走不同分支。

对硬件厂商和发行版维护者来说,测试表不能只写“音频正常”“画面正常”。更具体的检查包括:

  • 耳机在冷启动前已插入、系统启动后再插入,两种情况分别验证;
  • 休眠、恢复、重启和切换输出设备;
  • 多显示器、不同刷新率和显示器热插拔;
  • 记录 PCI ID、固件版本、桌面协议和内核配置。

当问题只在冷启动或恢复路径中出现时,用户很难用一句“偶发”描述清楚。测试记录越具体,内核开发者越容易复现和定位。

为什么候选版更适合做回归测试

候选版的意义,在于它把“新功能快速合入”和“行为稳定下来”分成了不同阶段。到了 rc2,开发者已经可以围绕相对稳定的接口和配置开展测试,同时还有机会在正式版前反馈问题。

这对不同角色的价值不一样:

角色 关注点 适合的动作
驱动作者 设备初始化、请求边界、并发和错误恢复 在真实硬件上跑定向压力测试
发行版维护者 配置、模块、安装和升级 用发行版配置构建并跑自动化测试
云平台或基础设施团队 I/O、网络、eBPF 和监控 在隔离节点进行工作负载回放
普通桌面用户 外设、图形、休眠和音频 等待发行版打包或稳定版发布

候选版本不适合直接替换生产内核,除非团队已经有完整的启动回滚、节点隔离和监控机制。测试的目标是尽早发现问题,不是为了让生产环境承担验证成本。

一套可执行的 rc2 回归流程

1. 先保留可回滚入口

在测试机器上保留当前稳定内核,并确认引导菜单可以选择旧版本。云主机或裸机环境还要确认远程控制台、串口或带外管理可用。内核测试最怕“升级成功,但无法远程进入机器”。

2. 用现有配置生成最小变更

尽量从正在运行的内核配置开始,使用 make olddefconfig 处理新增选项,再编译 rc2。这样出现差异时,问题更可能来自候选版本身,而不是同时更换了大量配置。

常见流程可以写成:

1
2
3
4
cp /boot/config-$(uname -r) .config
make olddefconfig
make -j"$(nproc)"
make modules

这只是构建示例,安装和启动方式应按发行版的打包策略执行。不要在不了解引导配置的情况下直接覆盖生产内核。

3. 让测试贴近真实工作负载

存储团队应回放真实 I/O 模式,BPF 团队应使用真实程序和自测试,桌面团队应覆盖冷启动、休眠和外设热插拔。单纯执行 uname -r 或成功启动,只能证明内核能启动,不能证明变更没有影响业务。

4. 对比三个版本

至少保留稳定版、rc1 和 rc2 的测试结果。对比启动时间、系统调用错误、I/O 延迟、网络吞吐、功耗、dmesg 警告和测试失败项。这样可以判断问题是在 rc1 已经出现,还是 rc2 新引入,避免把旧问题误报成新回归。

5. 报告问题时给出可复现条件

一份有用的内核回归报告,应包含内核版本和提交、硬件型号、固件、发行版、配置文件、复现步骤、预期与实际结果,以及必要的日志。对这次 rc2 来说,说明问题是否只出现在特定队列深度、启动顺序、BPF 程序或显示器组合中,比一句“升级后坏了”更有帮助。

该不该现在升级

可以按使用场景做判断:

  • 内核开发者和驱动作者: 值得在测试机上跟进,尤其是存储、BPF、跟踪、音频和显示相关项目。
  • 发行版维护者: 可以开始构建和跑自动化回归,为后续稳定版打包做准备。
  • 基础设施团队: 只在隔离节点或灰度环境验证,不要把候选版直接铺到整个集群。
  • 普通桌面用户: 没有明确问题需要验证时,继续使用发行版提供的稳定内核更合适。

rc2 的发布不代表 7.3 已经完成,也不代表所有问题都已修复。它提供的是一份更接近正式版的测试材料,以及一个让问题在稳定版之前被看见的窗口。

结语

Linux 7.3-rc2 的价值不在于“今天多了哪些功能”,而在于它让内核生态进入了下一轮验证阶段。存储请求边界、跟踪对象生命周期、BPF 验证器状态和特定硬件启动顺序,都说明稳定性往往藏在很窄的路径里。

如果你的项目依赖自定义内核、eBPF、特定存储控制器或复杂外设,今天可以做的事情很具体:保留可回滚内核,用现有配置构建 rc2,回放真实工作负载,并把稳定版、rc1、rc2 的结果放在一起比较。候选版不是用来炫耀版本号的,它的作用是让下一次正式发布少一些意外。

参考来源

文章目录
  1. 1. rc2 到底意味着什么
  2. 2. 从比较结果里能看到哪些修复方向
    1. 2.1. 存储:限制 NVMe 请求,避免 PRP 链越界
    2. 2.2. 跟踪:初始化顺序和对象生命周期仍然是高风险区域
    3. 2.3. BPF:验证器修复不能只看“程序能否加载”
    4. 2.4. 音频与显示:硬件回归往往只发生在特定组合
  3. 3. 为什么候选版更适合做回归测试
  4. 4. 一套可执行的 rc2 回归流程
    1. 4.1. 1. 先保留可回滚入口
    2. 4.2. 2. 用现有配置生成最小变更
    3. 4.3. 3. 让测试贴近真实工作负载
    4. 4.4. 4. 对比三个版本
    5. 4.5. 5. 报告问题时给出可复现条件
  5. 5. 该不该现在升级
  6. 6. 结语
  7. 7. 参考来源
|