Linux Kernel 5.12-RC1標記為dontuse 嚴重到會毀掉整個根文件系統
在昨天發布的Linux內核郵件列表中,大神Linus Torvalds在他的公共Git Tree中警告全世界不要使用5.12-rc1內核。郵件中寫道:“某些人可能已經註意到在我的公共GitTree中,’v5.12-rc1’已經被標記為’v5.12-rc1-dontuse’。雖然內部依然寫著’v5.12 -rc1’並且也是由我簽名的,但是用戶可見的標籤名卻變了”。
當Torvalds 將某些代碼標記為“dontuse”,通常表明這個問題比較大。在5.12 首個候選版本更新中,破壞了交換文件(swapfile)的處理。具體來說,更新後的代碼會失去指向swapfile 開頭的正確偏移。用Torvalds 自己的話來說,“交換還是會發生,但它發生在文件系統的錯誤部分,最終結果顯然是災難性的”。
這樣Linux 內核如果想要將內存中的內容分頁到磁盤上的時候,數據就會落在相同磁盤和swapfile 活躍的分區的隨機部分上,而且這不是作為文件,而是作為垃圾直接寫入到磁盤的原始扇區。這意味著不僅要覆蓋現有文件中的數據,還要覆蓋相當大塊的元數據,這些元數據的損壞很可能會導致整個文件系統無法掛載和使用。
Torvalds 繼續指出,如果你根本不使用swap,那麼這並不影響你。不過如果你正在使用swap 分區,而不是swap 文件,你也同樣不會受到影響。
據我所知,所有正常的發行版都是用swap分區,而不是文件來設置的因為老實說,swap 文件往往會比較慢,而且還有其他各種複雜的問題。許多發行版仍然默認使用swap分區,而不是文件。但是Ubuntu–它可能是這個星球上部署最廣泛的Linux發行版–已經默認安裝swapfiles四年多了。而這個bug 很可能會毀掉你的整個根文件系統。