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.