最近席卷美国大部分地区的冰冷风暴使Linux之父Linus Torvalds家停电6天,然后终于有电有网了,Linus Torvalds宣布发布Linux 5.12内核系列的第一个RC版本里程碑的公开测试。并将此版本称为“【Frozen Wasteland(冰冻荒原)】”内核。

不过不要高兴的太早,在近日发给Linux内核邮件列表的消息中,Linux之父Linus Torvalds警告全球程序员不要在他的公共git树中使用5.12-rc1内核。

嘿,偷看-你们中的有些人可能已经注意到,在我的公共git树中,“ v5.12-rc1”标记已经神奇地重命名为“ v5.12-rc1-dontuse”。它仍然是同一对象,内部仍显示“ v5.12-rc1”,并且仍由我签名,但是标记的用户可见名称已更改。

嘿,各位,有些人可能已经注意到,在我的公共git树中,“v5.12-rc1”标记神奇地被重命名为“v5.12-rc1-dontuse”。它仍然是相同的对象,它仍然在内部说“v5.12-rc1”,它仍然是由我签名的,但是用户可见的标记名已经改变了。

当Linus Torvalds标记一些代码dontuse(不要使用)时,他的意思这个5.12候选版本出现了问题,以某种方式破坏了swapfile的处理。具体来说,更新后的代码将丢失指向交换文件开头的适当偏移量。用Torvalds自己的话说,“交换仍然发生,但是它发生在文件系统的错误部分,具有明显的灾难性最终结果。”

意味着当内核将内存中的内容分页到磁盘时,数据将落在相同磁盘和交换文件所在分区的随机部分,这意味着不仅要覆盖现有文件中的数据,还要覆盖大量元数据,这些元数据的损坏可能导致整个文件系统无法挂载和不可用。

Torvalds继续指出,如果您不使用交换(swap),则此问题不会对您造成任何伤害。而且,如果您使用交换分区(swap partitions)而不是交换文件(swap files),则同样不会受到影响。

许多发行版仍然默认交换分区,而不是文件。但是,Ubuntu(也许是全球部署最广泛的Linux发行版)默认已安装交换文件已有四年多了。如果您是Ubuntu用户(或Ubuntu发行版的发行人,例如Mint),则可能有交换文件,并且此错误可能会破坏您的整个根文件系统。

然而,Torvalds的警告远远超过了个人用户可能使用发行版候选内核所做的事情。更重要的是,内核开发人员不能把他们自己的工作建立在那个版本的基础上,否则可能会带来一个非常糟糕的bug。

我想确保没有人使用5.12-rc1标记开始新的主题分支。我知道一些开发人员倾向于这样说:“好吧,rc1已经出来了,我已经把所有的开发工作都放在这个合并窗口里了,我现在要快进到rc1,并把它作为下一个版本的基础。”这次不要这样做。

在候选版,测试版出来时,我每次都向我们的Linux用户发出了我自己经常发出的警告:不要盲目安装尚未经过充分测试的rc代码。虽然Linux内核候选版本通常非常、非常可靠,而且人们很想尽早地研究新特性——但是这样做可能会带来非常、非常糟糕的后果(比如这次的5.12-rc1)。我们还是应该等等,等待代码进入生产状态来避免出现这个可怕的后果。

源自:arstechnica

发表评论