Linus Torvalds 對Linux 6.9 的某些Bcachefs 程式碼不滿意
自從Bcachefs檔案系統被納入Linux 6.7 核心的上游版本以來,它就一直保持良好的運作狀態。但今天,Bcachefs 的功能更新被提交到Linux 6.9 合併窗口,而Linus Torvalds 對其中的一些程式碼並不滿意。
為Linux 6.9 提交的Bcachefs 程式碼包括一些前期準備工作,例如為子捲走讀提供使用者空間介面、改進目錄結構檢查、改進日誌管線以提高效能、改善丟棄路徑以提高效率,以及其他最佳化。維護者肯特-奧弗斯特里特(Kent Overstreet)將針對Linux 6.9 的Bcachefs 改動的拉取請求總結為:
針對Linux 6.9 的Bcachefs 更新9 的bcachefs 更新
– 子卷的子btree;這是為走子卷提供用戶空間介面所必需的,稍後會推出
– 目錄結構檢查的大量改進
– 改進了日誌管線,顯著提高了高深度寫入工作負載的效能
– 改進了丟棄路徑:丟棄路徑更有效率,不再不必要地刷新日誌
– 緩衝寫入路徑現在可以避免佔用節點鎖
– 調出各種函式庫程式碼供XFS 使用:time stats、mean_and_variance、darray、eytzinger、thread_with_file
– 新的毫米助理:memalloc_flags_{save|restore}
– mempool 現在可以使用kvmalloc mempool
但讓Linus Torvalds 感到不解的是,有些補丁將Bcachefs 程式碼中的某些元素移到了某些函式庫類型的程式碼中,這樣其他檔案系統就可以輕鬆地重複使用這些程式碼了–XFS 就是對可能重複使用某些Bcachefs 功能感興趣的檔案系統。
Linus Torvalds回應了Bcachefs 的拉取要求:
,”stdio_redirect_printf()”和darray_char 只是可怕的接口,沒有任何解釋。這些接口太噁心了。這些接口太噁心了。
,把它放在你自己的程式碼裡,不要試圖把它變成一個通用的函式庫。
,如果你**把它變成一個庫,它需要
(a) 解釋得更清楚
(b) 有更合理的命名,減少噁心和完全無意義的介面(”DARRAY()”)。
但最讓人頭痛的還是那些瘋狂的數學。
該死的,我們很久以前就討論過那些愚蠢的”均值和方差”垃圾。
你沒有解釋為什麼它不能使用簡單得多的MAD(中位數絕對偏差)而使用變異數。
這個錯誤的決定直接導致了毫無意義地使用過於複雜的128 位元數學。
當時我就說它設計過度,據我所知,除了一些細微的類型名稱細節外,絕對沒有任何變化。
但現在你卻試著將這些垃圾程式碼作為通用函式庫程式碼推給其他人使用,這立刻就意味著我**介意過度工程化的介面。
在其他方面,time_stats 看起來就像一個有名稱和用途的正常接口,但使用了可怕的基礎架構後,它就失效了。
在Overstreet 闡述了自己的觀點後,Torvalds補充道
變異值是不同的,但MAD 和標準差之間的差異基本上只是一個常數因子(不同的分佈會有所不同,但那又怎樣?)
那麼,為什麼一個常數因子會對指數加權產生任何影響呢?
總之,請把你的程式碼放在bcachefs 中。
也許xfs 也想拷貝你的程式碼。我不在乎,這看起來很蠢,但這是檔案系統的選擇。
但如果我們要讓它成為一個通用的核心庫,它就必須理智。不能為了一個隨機的統計元素,就讓人們做64 位元的平方根和128 位元的除法。
因此,從目前的情況來看,Linus Torvalds 並沒有接受這個針對Linux 6.9 核心的Bcachefs 拉取請求,原因是提議的通用函式庫程式碼。我們將拭目以待,看看未來幾天是否會有新的拉取請求,放棄這些修補程式或以其他方式重新修改,以滿足Linux 創作者的要求。