自從Bcachefs文件系統被納入Linux6.7內核的上遊版本以來,它就一直保持著良好的運行狀態。但今天,Bcachefs的功能更新被提交到Linux6.9合並窗口,而LinusTorvalds對其中的一些代碼並不滿意。
為 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 創建者的要求。