编译丨诺亚
出品 | 51CTO技术栈(微信号:blog51cto)
Linus Torvalds最近在Linux内核邮件列表上发表了一篇措辞激烈的帖子,对Google的一位贡献者关于文件系统方面的建议进行了严厉批评。争论的焦点在于inode,根据Red Hat的解释,inode是“给定文件系统上特定元数据的唯一标识符”。
过去几周,inode问题一直在Linux内核邮件列表上引发讨论,其中谷歌内核贡献者 Steven Rostedt和Torvalds围绕此话题展开了激烈的交流。在一个名为“使所有文件和目录的inode号都相同”的线程中,有人指出,在使用tar进行文件归档时,inode可能仍具有作用。对此,Torvalds反驳称,inode的时代已经过去了。
他写道:“是的,inode号曾经很重要,并且背后有一段历史。但我们应该尽最大努力摆脱那段有缺陷的历史。inode号现在已经不是唯一的描述符了。我们不再是生活在20世纪七十年代,文件系统已经发生了变化。”
尽管如此,关于inode的辩论仍在继续。最终Rostedt建议所有的inode都应该拥有唯一的数字编号。
Torvalds对此回应的用词和语气在近年来十分罕见。
毕竟2018年他曾宣布暂时离开并寻求情绪控制上的帮助,此前他为向其他Linux程序员和项目贡献者的电子邮件中的轻率攻击道歉,承认那些攻击行为“既不专业也毫无道理。尤其在我将其变得非常私人化的时候……我现在明白这是不对的,并真心表示歉意”。
Torvalds之所以表现出悔过之意,部分原因在于Linux内核邮件列表实际上对于许多贡献者来说是一个工作场所。滥用语言暴力不利于营造一个愉快的工作环境,考虑到Linux依赖于志愿者贡献者和维护者,恶劣的工作环境有可能对项目造成伤害。
针对Rostedt提出的关于唯一inode号码的建议,Torvalds首先开篇说:“别把事情搞得比需要的更复杂。”
接着他的言辞变得更为激烈:
“天哪,别再复制VFS层函数了!上次是个坏主意,这次也是个极其糟糕的主意。我不会接受这种垃圾代码。”
Torvalds主要批评Rostedt的点在于,他认为这位谷歌开发者并没有完全理解所涉及的主题内容——这一点后来得到了Rostedt的认可。
不过,在那之前,Torvalds已经发动了自己的言语“攻击”。如下所述:
你在未理解函数为何执行特定操作的情况下复制了该函数,因此你的代码完全是垃圾。
再次强调这一点。
在接下来一段时间里,辩论以相对冷静的语气继续进行。Torvalds提出了他认为可以更好地解决Rostedt所关注问题的建议。
这位Linux之父写道,他并不打算立即着手处理这个问题,因为他已经为此浪费了足够多的时间,而且他在其他职责方面也落后很多,因此现在无法在这方面投入精力。
针对Torvalds的说法,Rostedt回复了一条颇有针对性的观察:
我完全理解你目前的工作负担和时间安排。我非常感谢你抽出宝贵时间来讨论这个议题,并提供了宝贵的见解和替代方案。我会仔细考虑你的建议并重新审视我的实现方式。为了确保我们的代码质量以及Linux内核整体的稳定性和效率,我会更深入地研究文件系统相关的底层机制,以避免再次出现这样的误解和无效工作。再次感谢你的指导,我将据此调整我的开发方向,力求达到更好的解决方案。
颇具讽刺意味的是,我一直推迟的一项职责——就是修复eventfs的同时编写一份关于维护者如何应对工作压力和倦怠问题的支持文档。:-p
到了周日,Torvalds开始在Linux内核的愉快话题上发布消息:Linux内核6.8-rc2版本正式发布。
他指出,在rc1中包含了一个“amdgpu调度错误,该错误可能导致桌面挂起(最终会恢复,但恢复时间可能长到足以让大多数用户选择重启电脑而不是等待)”。
“这个问题似乎影响了相当多的人。”
幸运的是,Torvalds本人曾遭遇的一个btrfs bug并未出现在rc1中,因为它在发布前就被注意到了。
他在帖子中写道:“无论如何,我希望随着rc2的推出,我们现在进入了发行周期中更为稳定的阶段,那些可能影响大量测试者的这类问题已经得到解决。因此,希望后续的修复将会更加细致,尽量不影响到常见的核心配置。”
“所以,请大家尽情测试吧。现在是安全的。你们信任我,对吗?”
当然,如果问题仅仅关于开发内核本身的话。
在Linus Torvalds发布了Linux内核6.8-rc2版本后,他鼓励开发者和测试者积极参与新版本的测试工作。尽管在内核开发过程中难免会遇到如bug修复、功能优化等挑战,但通过不断的迭代更新和社区成员之间的合作与反馈,Linux内核得以持续改进和增强。因此,对于那些信任并关注内核开发的人来说,参与测试不仅有助于提高内核质量,也是推动整个开源生态系统向前发展的关键步骤之一。
参考链接:https://www.theregister.com/2024/01/29/linux_6_8_rc2/?td=rt-4a