<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          LWN:合入bcachefs!

          共 4549字,需瀏覽 10分鐘

           ·

          2023-07-05 18:29

          關(guān)注了就能看到更多這么棒的文章哦~

          Merging bcachefs

          By Jake Edge
          June 16, 2023
          LSFMM+BPF
          DeepL assisted translation
          https://lwn.net/Articles/934692/

          bcachefs 文件系統(tǒng)及其推送到 upstream 的過程是 bcachefs 的創(chuàng)建者 Kent Overstreet 在 2023 年 Linux 存儲、文件系統(tǒng)、內(nèi)存管理和 BPF 峰會上遠(yuǎn)程主持的會議的主題。他在前幾屆峰會上也討論了 bcachefs,第一次是在 2018 年,還有一次是在去年。這兩次討論中,都有提到將 bcachefs 合并到 mainline 內(nèi)核中的問題,但到現(xiàn)在仍然沒有 merge。不過這一次,Overstreet 似乎比以往任何時候都更接近于真正開始這個過程。

          他在演講開始時指出,他一直在說 bcachefs 差不多已經(jīng)準(zhǔn)備好合并了。“現(xiàn)在我說,我們終于該做這一步了”。他想報告一下這個文件系統(tǒng)的狀態(tài),以及為什么它現(xiàn)在已準(zhǔn)備好 upstream,但他想利用會議的大部分時間來討論推到 upstream 的過程。“這是一個巨大的,90,000 行代碼的巨獸”它需要 review,所以有必要弄清楚進(jìn)行 review 如果進(jìn)行。

          他對 bcachefs 的目標(biāo)是擁有“具有類似于 XFS 的性能,可靠性,可擴(kuò)展性和健壯性,以及跟得上時代的各種功能”。這是一個很高的標(biāo)準(zhǔn),bcachefs 還沒有達(dá)到,但“我認(rèn)為我們已經(jīng)走得很遠(yuǎn)了”。人們在 100TB 文件系統(tǒng)上運行 bcachefs“沒有任何問題或投訴”;他正在等待第一個 1PB 文件系統(tǒng)出現(xiàn)。他說,“snapshot 功能的在更大 size 下也可以很好擴(kuò)展支持”,而 Btrfs 就有這方面的問題,這是根據(jù)用戶的抱怨來得到的信息。

          Status

          在過去的一年中已經(jīng)完成了很多可擴(kuò)展性方面(scalability)的工作,其中大部分都是需要深入地重寫,包括歷史可以追溯到 bcache 的一個分配器。有一種新的“寫入時無復(fù)制”(nocow)模式,并且已實現(xiàn) snapshot 功能。他說,人們正在使用這個快照功能來備份 MySQL 數(shù)據(jù)庫,這是對該功能穩(wěn)健性的測試。

          3070cbda0ffd191f1c666f4c5a4961e1.webp

          [Kent Overstreet]

          擦除編碼(Erasure coding)是他想在上流式之前進(jìn)入 bcachefs 的最后一個真正重要的功能。但他認(rèn)為“是時候在沙子上畫一條線了”,所以可以等到今后再說。還有很多工作要做,但“大塊功能相關(guān)的工作正在減少”,他將能夠成為一名維護(hù)者,而不必像他在 snapshot 開發(fā)時期所做的那樣,消失一個月來做具體的開發(fā)。

          bcachefs 團(tuán)隊正在壯大。Red Hat 的 Brian Foster 在 bug fix 方面做了很多重要工作,Overstreet 說。Eric Sandeen 也幫助吸引了人們對紅帽 bcachefs 的興趣。每兩周有一個關(guān)于 bcachefs 開發(fā)相關(guān)的電話會議。Overstreet 說,已經(jīng)添加了自動化測試的基礎(chǔ)設(shè)施,它“使我的生活更加輕松”。測試系統(tǒng)需要陰性大約半小時,包括多次運行 fstests 以及 bcachefs 的“非常龐大的測試套件”。

          Rust 是他一直在向“任何愿意傾聽的人”宣傳的語言;他認(rèn)為“當(dāng)我們終于有更好的選擇時,仍然用 C 編寫代碼是瘋狂的做法”。他喜歡寫代碼,但不喜歡調(diào)試它;用 Rust 編寫“就意味著更少需要花時間調(diào)試”。他打算在 Rust 中慢慢重寫 bcachefs,這將是一個持續(xù)十多年的項目,但在 bcachefs 中使用 Rust 的工作已經(jīng)開始。一些用戶空間工具已經(jīng)在 Rust 中重寫了,有人正在考慮將其中一些工作轉(zhuǎn)移到內(nèi)核中。

          Upstreaming

          那天早上,他發(fā)布了 32 個初始 patch,用來添加 bcachefs 需要的基礎(chǔ)設(shè)施。他說,這些補丁已經(jīng)在 review 中。剩下的是他沒有發(fā)布的 2,500 個補丁,包含 90,000 行代碼。他確實也提供了一個指向他的 Git 倉庫的鏈接,這些補丁位于 bcachefs-for-upstream 分支中。然后,他開始討論如何 review 這些 patch 從而最終合并。

          Josef Bacik 說,他認(rèn)為人們的反應(yīng)將與去年大致相同。文件系統(tǒng)開發(fā)人員“非常高興”看到 bcachefs 被合并。他不打算 review 文件系統(tǒng)本身的實現(xiàn),估計所有人都會這樣做。正在研究它的人會 review,“相信自己這部分”。“通用的東西是我們需要 review 的”,在這部分 review 之后,這個文件系統(tǒng)的其余代碼就可以合并了,至少是他的觀點。當(dāng)然,這最終取決于 Linus Torvalds。

          Overstreet 說,他的一個問題是:“我們提供什么給 Linus?”去年,他花了一年時間研究流程和基礎(chǔ)設(shè)施,組建團(tuán)隊,與紅帽合作,組建自動化測試套件等等。Mike Snitzer 遠(yuǎn)程指出,最近被拒絕的補丁集包含了兩個基本上無法 review 的巨大 patch;他將其與構(gòu)成 bcachefs 的 2,500 個小 patch 進(jìn)行了對比,指出后者更容易消化。

          雖然 Snitzer 不確定讓每個人都應(yīng)該 review 來逐一檢查,但這組補丁系列開發(fā)過程中的努力程度,讓人們更容易信任代碼以及開發(fā)流程。“你已經(jīng)完成了繁重的工作,完成了所有這些工作來拆分 patch。Overstreet 表示,要重新構(gòu)建差不多整個歷史記錄需要做很多工作,但是大約六個月前,當(dāng) Red Hat 注意到一些重大的性能退化時,它就派上了用場。他能夠利用這段歷史來自動進(jìn)行 bisect 二分法查找,把性能基本上恢復(fù)到了從前的樣子。

          Bacik 說,Torvalds 是負(fù)責(zé)合并新文件系統(tǒng)的“維護(hù)者”,因此由他決定是否愿意將完整的歷史記錄拉入 mainline。Bacik 更希望這樣做,因為 git 歷史“超級有用”,但這不是房間里的人可以決定的。他建議,pull request 更多的是關(guān)于完整的歷史是否可以接受,如果不能的話,會是什么接受什么樣子的。

          這里有一個問題,一旦 bcachefs 被合并,除了 Overstreet 之外的任何人都很難處理 bug report,Amir Goldstein 說。在 pull request 中對其進(jìn)行解釋是很重要的。“我想合并并且我有一個團(tuán)隊可以支持這個”。能獲得更多幫助是 upstream 之前的標(biāo)準(zhǔn)之一,Overstreet 說。他知道,如果這一切都是一場獨角戲的話,他會被 bug 報告給淹沒的,他會“發(fā)瘋,逃到南美去”。Foster 一直在提供“巨大的幫助”,這也是他之所以人為目前可以走到 merge 狀態(tài)的原因之一。

          有些矛盾的是,最近從內(nèi)核中刪除了一些文件系統(tǒng)(例如 ReiserFS),這實際上將使添加新文件系統(tǒng)變得更加容易,Ted Ts'o 說。他記得 Hans Reiser 對他的新文件系統(tǒng)充滿熱情,并有一個團(tuán)隊來支持它,但多年之后這一切都變得年久失修。內(nèi)核項目現(xiàn)在有一個流程可以用來在棄用期之后把這個文件系統(tǒng)的支持移除掉。“接受文件系統(tǒng)不意味著永遠(yuǎn)接受,這使得合并新文件系統(tǒng)變得更加容易”。

          他還建議將這組補丁分解為更小、更易于 review 的組合,每個組合都包含少量相關(guān)的 patch。這將使人們更容易在一個組合中查看所有 lockdep 相關(guān)的改動。這意味著會放寬關(guān)于在第一個調(diào)用者合并之前不合并基礎(chǔ)設(shè)施的原則,他贊成。他將修改該準(zhǔn)則,從而允許在它包含指向第一個調(diào)用者的 Git 樹的鏈接的情況下就可以進(jìn)行合并。

          Overstreet 認(rèn)為,他當(dāng)天早些時候發(fā)布的初步報告不會有太大爭議,除了可能一兩個之外,都“會順利通過”。他指出,Christoph Hellwig 反對 vmalloc_exec() 補丁,盡管 bcachefs 需要該功能,Overstreet 說。自演講以來,Mike Rapoport 提出了 JIT allocator,這可以根本性地解決問題。

          一位遠(yuǎn)程參與者說,F(xiàn)oster 的經(jīng)歷就表明,這組代碼是比較容易上手的。在 bcachefs 合入之后,感興趣的開發(fā)人員將能夠跟上來,開始工作,幾乎不會有困難。Christian Brauner 要求明確說清楚,如果 Overstreet 不在的時候,還有誰可以介入進(jìn)來并 merge 補丁。Brauner 指出,NTFS/NTFS3 維護(hù)者消失了,盡管有人為該文件系統(tǒng)做出了貢獻(xiàn),但不清楚“誰可以將 patch 推送到 upstream 去”。Overstreet 表示,如果 Foster “愿意挺身而出”的話,他會完全信任他能承擔(dān)好這個角色。

          Brauner 說,他認(rèn)為 bcachefs 處于“走向上游的絕佳狀態(tài)”,但他擔(dān)心內(nèi)核中的文件系統(tǒng)數(shù)量。他高興地看到,有人努力消除其中一些。今后如果有改動會影響代碼庫中的所有文件系統(tǒng),那么相關(guān)的改動“很快就會變成痛苦”,在某些情況下,沒有人可以審查這些改動。他希望接受文件系統(tǒng)的過程可以變得更加保守。例如,接受 NTFS / NTFS3 是“一個巨大的錯誤”。Brauner 說,這些都不是針對 bcachefs 的,而是一個更普遍的問題。文件系統(tǒng)的接受和棄用在當(dāng)天晚些時候的閃電演講(YouTube 有視頻)中被討論到了。

          Darrick Wong 說,他已經(jīng)開始按照 Ts'o 在 XFS online repair 中的建議去做了實現(xiàn)。他有一系列基礎(chǔ)設(shè)施 patch,調(diào)用者也會不久之后出現(xiàn)。他說服了 Dave Chinner,不光著眼于這個功能的更大圖景,也是有必要 review 基礎(chǔ)設(shè)施部分代碼的。這對他很有幫助,因為他可以停止“反復(fù) rebase 和不得不玩 code golf,類似于在 patch set 中上下移動一個 helper 函數(shù)的 patch 的先后次序”。他說,把所有這些東西放在一組單獨的基礎(chǔ)設(shè)施 patch 中對他很有好處,盡管它確實引起了 review 人員的一些抱怨,但這種方法也已經(jīng)有一些先例了。

          Overstreet 表示,他并不特別關(guān)心他需要合入的 30 個左右“相對簡單”的基礎(chǔ)設(shè)施補丁。他將等待 Acked-by 和 Reviewed-by 標(biāo)簽出現(xiàn),但如果沒有出現(xiàn)的話,那么他將使用人們建議的方法“作為 B 計劃”。至此,會議結(jié)束。

          全文完
          LWN 文章遵循 CC BY-SA 4.0 許可協(xié)議。

          歡迎分享、轉(zhuǎn)載及基于現(xiàn)有協(xié)議再創(chuàng)作~

          長按下面二維碼關(guān)注,關(guān)注 LWN 深度文章以及開源社區(qū)的各種新近言論~



          瀏覽 48
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩黄色真人直播 | 成人网站在线观看mv视频 | 操泥马网 | 九九在线精品 | 影音先锋成人AV |