当前位置:首页 > 科技资讯 > 正文

Linus Torvalds怒拒Linux 7.0 MMC代码:质量不过关

众所周知,以严格和直接著称的Linux之父Linus Torvalds,对代码质量抱有极高的要求,特别是要合并到Linux内核的代码,更是不能容忍任何瑕疵或敷衍。

在Linux 7.0内核的开发过程中,一批计划整合的MMC相关代码修改直接触碰了Linus的底线——他被这批代码称为“完全是垃圾”、“未经测试的破烂”,并毫不留情地全部驳回。原本为Linux 7.0准备的一系列MMC子系统优化也因此彻底与该版本无缘。

MMC究竟是何方神圣?

Linux MMC(MultiMediaCard)子系统是内核中负责管理MMC、SD及SDIO总线协议的驱动框架。它不仅驱动eMMC、SD卡等存储设备,也驱动通过SDIO接口连接的非存储外设,如Wi-Fi模块、蓝牙适配器等。手机、嵌入式设备、开发板乃至部分服务器设备中的存储及无线通信部件,都可能依赖这一机制。

它负责设备初始化、协议处理以及读写调度等底层工作。尽管普通用户很少直接接触到这一层,但在实际系统运行中,它是存储栈里不可或缺的一部分。

Linus Torvalds怒拒Linux 7.0 MMC代码:质量不过关 Torvalds Linux内核 MMC代码 代码质量 第1张

Linus怒斥Linux 7.0中的MMC代码修改

这次子系统维护者原本计划给 Linux MMC 带来一波升级,其中包括了一些引人注目的改动,例如:

  • 为通过SDIO连接的NXP IW61x WiFi芯片添加设备ID支持;
  • 加入对2025年之后生产日期的识别支持;
  • 针对部分Kingston eMMC优化安全擦除和TRIM操作;
  • 对DW_MMC代码进行清理;
  • 在mtk-sd驱动中新增对联发科MT8189的支持,以及对多个SHDCI驱动的更新。

从功能层面看,这些改动并不激进,更像是一次常规迭代。

问题出在代码本身以及流程上。

按照内核社区长期形成的惯例,子系统更新在向Linus发起pull request之前,应当先进入linux-next仓库进行整合测试。linux-next的作用是在主线合入前发现跨子系统冲突、编译问题以及集成错误。

然而,这次的MMC更新到了Linus手中时还存在一堆问题。

Linus在邮件中直接怒斥道:“这些改动完全是垃圾,甚至连编译都过不了。看起来它们根本没有进过linux-next,也没有做过任何构建测试。”

Linus的“代码”洁癖

其实熟悉Linux社区的人都知道,Linus对代码质量的要求向来严苛,这次的操作其实一点都不意外。Linux作为全球使用最广泛的开源内核,其稳定性和可靠性直接关系到无数设备的正常运行。

而Linux-next这个测试环节,就是内核代码的“第一道安检”,能提前发现编译、兼容性问题,避免有问题的代码进入正式版本。这批MMC代码不仅没走安检,还自带一堆错误,显然触碰了Linus的底线。

对此,Linus的态度也很明确:

「我不想看到你再发什么“修复版”的pull request。这件事完全不可接受,在这个合入窗口期间,我不会再从你这里拉取任何东西。

别再给我发那些没进过linux-next、连最基本检查都通不过的未测试垃圾代码。

你可以在7.1周期再试一次——前提是它真的进过linux-next,并且经过了正确的测试。」

回看过往,Linux内核每个版本周期都会发生类似的“临门刹车”事件。对外界来说,这看起来像是一次“怒批”;对长期参与内核开发的人来说,这更像是例行的流程纠偏。

开放协作并不等于放松标准。正是这种对流程和质量的坚持,才让Linux主线在数十年高频迭代中保持相对稳定。