Linux 內核之父 Linus Torvalds 最近在郵件列表里對新晉文件系統Bcachefs怒發沖冠,直言在即將到來的 6.17 合并窗口里要 “分道揚鑣” —— 好不容易并入內核主線的 Bcachefs 難道要被踢出去?Bcachefs 作者則直接對 Linus 爆粗:“
別JB發瘋了
背景故事
Bcachefs 是 Linux 下的一個新型寫時復制(COW)文件系統,由 Kent Overstreet 主導開發 。Kent 此前的代表作是已經并入內核多年的塊緩存層工具 Bcache,可以看作 Bcachefs 的“前身原型”。實際上,早期的 Bcachefs 直接復用了約 80% 的 Bcache 代碼。
2015 年 Kent 宣布開始研發 Bcachefs;經過近十年打磨,Bcachefs 在 2024 年初的 Linux 6.7 版本中被并入內核主線。Bcachefs 聲稱要融合 ZFS、Btrfs 那樣的現代特性與 ext4、XFS 等傳統文件系統的性能。然而理想很豐滿,現實很骨感,Bcachefs 自打進入主線以來問題不斷。
Kent 作為開發者在社區內口碑并不算好,甚至可以說是爭議不斷。在此次事件之前,他就因為在郵件列表上對其他開發者出言不遜、態度生硬挨過批。例如 2024 年底他因一次爭執直接被 Linus 禁止參與當時的 6.13 內核開發 。很多內核老炮兒對 Kent 的評價是“技術不錯,就是太難合作”——他往往我行我素,不太愿意妥協配合他人的規則。這種性格埋下了此次矛盾的伏筆。
正面硬剛
事情的導火索發生在 Linux 6.16-rc 階段。按慣例,內核合并窗口(merge window)一過,后續的 rc 版本周期只接受錯誤修復,不加入新功能。但 Kent 在 6.16-rc3 發布后不久提交通知,請求合入一個名為“journal-rewind”的新功能補丁。據稱這是為改進 Bcachefs 文件系統修復工具而設計,可以解決用戶報告的一項數據損壞隱患。然而這個補丁牽涉范圍較大,改動超過一千行代碼,而且嚴格來說屬于新特性 ——明顯有違 rc 階段“只修 Bug 不添新功能”的規則。
Linus 對此十分不滿,當即在郵件中表示:“看起來你又把合并窗口的本意給忘了。不能因為你發現了別的 Bug,就趁機開始往里加新特性”。簡而言之,Linus 覺得 Kent不守規矩,挑戰了內核開發的流程共識。
面對 Linus 的訓斥,Kent 不但沒有認錯收手,反而據理力爭,堅持這個“journal-rewind”并非普通新功能,而是修復致命問題所需,認為規則不該不近人情。更勁爆的是,兩人在郵件中你來我往,話越說越沖。Linus 雖然一貫以暴脾氣聞名,這回卻是 Kent 先爆了粗口。據社區整理的郵件記錄,Kent 在回復 Linus 時開篇就略帶火藥味地寫道:
Kent:“Linus,我不是想說你對 Bcachefs 就不能發表意見,沒這意思,老實講我挺樂意和你合作 —— 前提是你別這么幾把難搞。不過你有時候真是瘋了,而且經常這樣……”
Kent 直接暗懟 Linus “某些時候像個混蛋(Dick 直譯做雞吧)一樣難纏”。Kent 接著埋怨 Linus 對待自己過于挑剔苛刻,并舉了個例子佐證:當初 Bcachefs 要合入內核時,有別的文件系統維護者私下對 Kent 打氣道“太好了,我們終于來了個敢正面剛 Linus 的文件系統維護員了!” Kent 緊接著表態:“我可不想弄到最后自己也陷入那種境地。我對用戶數據完整性和必要的補丁修復是絕不會含糊的,這方面我沒什么幽默感(開不得玩笑)。”他這意思很明確:俺就是要優先保證用戶的數據不丟、Bug 必需得修,該破例就得破例,哪管什么流程規定。
Kent 直言自己并非無視 Linus 的建議,而是希望 Linus“能消停點”,別老是把每次提 Pull Request 都變成興師問罪、上綱上線的大戲:“就像我說的——我一直以來只希望你別老揪著 Pull Request 階段不放,非要把所有爭論都壓到合并請求里來攤牌。”他甚至勸起了 Linus:“你提的點子確實都很好,人也確實夠敏銳聰明。我們不掐架的時候,一起解決問題干正事其實挺他媽痛快的——這一點我非常享受。但是你也得理解別人肩膀上扛著的那些壓力,不要只顧自己那一套。” 一方面毫不客氣地懟了回去,甚至直接用了“消停點”“幾把難搞”之類的粗話;但另一方面也承認 Linus 本人技術一流,“跟你一起干活很爽”,話里話外希望雙方能降低沖突、繼續合作下去。
只可惜,Linus 的態度已經被徹底觸怒。在和 Kent Battle 期間,Linus勉強接受了那份包含爭議功能的 Pull Request(也就是暫時合入了“journal-rewind”補丁),但隨即放出狠話:“補丁我拉了,但照我們討論的情況來看,6.17 合并窗口的時候,我們恐怕就要分道揚鑣了。你已經明確表示我今后對你的補丁連問都不該問,反正你遞過來的東西我就得全盤照收。說真的,在那種情況下,我完全不覺得參與其中還有任何意義。我們倆最后似乎唯一達成的共識就是—— “到此為止”(“we're done”)—— Linus 已經決定不再摻和 Bcachefs 的維護,言下之意就是要把它踢出內核主線。
畢竟 Linus 身為掌舵人,如果對某個子系統(尤其是一個新進主線的試驗性文件系統)失去信心,他大可以在下一版本的合并窗口拒絕任何來自該維護者的代碼。事實上一旦 Linus 撂了挑子,其他高級維護者也不會貿然去動,一個新人驅動的文件系統很可能就此被“雪藏”。
值得一提的是,在這場沖突中不止 Linus 一人發難。著名的 ext4 文件系統維護者 Theodore Ts'o 也站出來敲打了 Kent 的做法,表示在 rc 階段引入如此重大的更改極易引入問題,尤其是對于文件系統這種涉及磁盤數據安全的模塊更要謹慎。他說內核社區長期以來對合并窗口的規則已有共識,而 Linus 的職責就是執行這些規則。換句話說,沒人能搞特殊化。面對多方壓力,Kent 依然強調 Bcachefs 情況特殊、用戶急需修復,希望大家“通融”。只不過這回 Linus 并未讓步。隨著 6.16-rc 系列進入尾聲,Linus 話里話外都透露出一個信號:“Bcachefs 就別留在我這兒添亂了”。
網友觀點
Linus 放話“分道揚鑣”的消息一出,立刻引發社區熱議。在 Reddit 的相關討論帖中,網友們發表了各種看法,不乏辣評和神吐槽:
?有人認為規則就是規則,Bcachefs 并不是什么特殊的存在,Kent 不該指望 Linus 為他破例。“其他文件系統的維護者開發新特性時都老老實實遵守規矩,沒聽說誰跟他似的搞這一出”。這類觀點支持 Linus 的立場:流程不能因為你個人厲害/自以為特別就無視,否則后患無窮。?也有網友細數了郵件線程的經過后直言:Kent總是拒絕接受別人說的“不”字,永遠在為自己開脫。“整個討論里,Linus 要的無非就是一個‘只包含修復的 Pull Request’,可 Kent 就是不肯,好像覺得自己真的特殊到規矩不適用。這人技術是有的,但就是無法和別人合作”。這番評論最后建議:既然 Kent 個性如此,也許他該找個協同維護者幫他打理提交,讓他自己專心寫代碼算了。?一些網友質疑Bcachefs 是否真的成熟可以進主線。有評論認為從這次事件看,Bcachefs 恐怕還不具備融入內核生態的準備,不如繼續在主線外打磨。畢竟如果開發者連基本流程都磨合不來,談何長期維護?在他們看來,現在把 Bcachefs 踢出主線未嘗不是好事—— 等將來代碼和維護都更加成熟穩健了,再回頭也不遲。?更多人則直接用腳投票,表達了對 Bcachefs 開發現狀的不信任。一位網友調侃道:“行吧,我還是繼續用 ext4” ——言下之意這一地雞毛看下來,自己是徹底不敢碰 Bcachefs 了。另外還有人附和:“我們相信 Ted T(Theodore Ts'o)的就夠了” ——擁護穩如老狗的 ext4,不折騰這些新花樣。甚至有網友刻薄地吐槽:“要我說,連基本規則都不遵守的開發者算不上什么‘人才’,再厲害我也不敢用他的軟件”。可見此次風波已經讓不少觀望中的用戶對 Bcachefs 心生疑慮。
總的來看,社區輿論對 Kent 的同情不多,對 Linus 的決定更多表示理解甚至支持。絕大部分人認同內核開發流程的嚴肅性:不是不能變通,但絕不能容忍一而再再而三的我行我素。畢竟內核不是某個人的獨角戲,而是數千開發者協作的結果。
老馮評論
在老馮的職業生涯中,遇到過最慘烈的一次數據庫故障現場算是拜 BCACHE 所賜 —— 一位朋友遇到。雖然 BCACHE 和 bcachefs 并不是一個東西,但他們都是由同一個作者 —— Kent 維護的,而且 bcachefs 起步直接 fork 了 80% 左右的 bcache 代碼。從實際結果上來看,我對 Bcache 這些東西的可靠性是高度存疑的。
這個 Slogan 聽上去有點滑稽……
文件系統這樣的關鍵組件需要很大的 “信任”,而這種信任只有通過多年的長期可靠使用才能建立起來。所以跑數據庫,老馮還是認準 ext4 或者 xfs —— 它們有這最好的可靠性戰績。而 Bcachefs ,還有 Reiser FS, Brtfs 這些東西雖然看上去有一些 “非常不錯” 的特性,但老馮確實是不會在任何生產數據庫上使用它們的。
老實說,老馮覺得像這樣的組件,與其硬塞入 Linux 內核中,倒還真不如獨立出來作為一個內核擴展獨立演進開發。就像 PostgreSQL 生態中的擴展一樣,往內核里塞那么多大部份人用不上的非必須功能,最后就會出現一堆這種 Drama。獨立出來 —— 自己愛怎么發布就怎么發布,那非要合進內核里蹭流量和Credit,可不就得按規則來么?不守規則被人噴也是活該了。
提示:本文含AI生成內容
參考閱讀:
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.