風風火火的 Linux 之父,Linus Torvalds,他又躍入公眾的視線?!按蜷_方式”依舊是熟悉的配方 —— 罵人。
我們先來看下 Linus 怒懟的名場面:
你的代碼就是垃圾。
我要把你丟進垃圾郵件一周。
而這一次的“受害者”,是來自谷歌的一位程序員,Steven Rostedt。而且他并非是隨隨便便的一位開發(fā)者,用網(wǎng)友的話來說“也算是大佬了”。
不僅如此,從時間線上來看,雙方已經(jīng)交鋒了足足有 4 天之久…… 那么這到底是怎么一回事?
一個“inodes”,吵了四天
這場激辯是發(fā)生在 Linux 內(nèi)核郵件列表。
Steven 起初是發(fā)了個帖子,主題是關于 eventfs(事件文件系統(tǒng))的補丁。
具體而言,就是想探討一下 inodes(索引節(jié)點)是否應該保持唯一性的問題。
(注:inodes 是 Linux 文件系統(tǒng)中的一個核心概念。它是一個數(shù)據(jù)結構,用于存儲文件或目錄的元數(shù)據(jù),而不是文件的實際內(nèi)容。)
Steven 認為:
Linus 之前建議在 eventfs 中使用相同的 inode 來簡化 getdents () 的實現(xiàn),這意味著所有文件和目錄都將使用相同的 inode。
然而,這種做法后來被發(fā)現(xiàn)會導致“find”命令出現(xiàn)問題,因為目錄和文件的 inode 相同。
Linus 隨后發(fā)現(xiàn)在 64 位機器上,eventfs_inode 結構中存在一個由于對齊而產(chǎn)生的空洞,可以用來存儲目錄的 inode,這解決了目錄的問題,但文件仍然保留了自己的 inode。
在 Steven 看來,由于 tar 命令依賴于 inode 來確定文件的唯一性,這種做法會破壞 tar 命令的功能:
目前,tar 命令在 tracefs(事件文件系統(tǒng)的一個變體)中已經(jīng)出現(xiàn)問題,因為它顯示所有文件的大小為零,導致 tar 不復制任何內(nèi)容。
除此之外,Steven 也給出了自己想到的解決辦法 —— 建議將 VFS 層的 get_next_ino () 函數(shù)復制到 tracefs 的 tracefs_get_next_ino () 函數(shù)中,并添加一個“files”參數(shù)。
這樣,當創(chuàng)建 eventfs 目錄時,就可以預先知道所需的 inode 數(shù)量。tracefs_get_next_ino () 將返回一個新的 inode,并預留下一個“files”個 inode 供調(diào)用者使用。
當創(chuàng)建文件的 inode 時,其 inode 將是其父目錄的 inode 加上在該目錄文件數(shù)組中的索引,從而為每個文件提供一個唯一的 inode。
然而,如此提案卻被 Linus 強烈反對。
Linus 的核心觀點是“inode 已經(jīng)不再是唯一的描述符,我們不應該繼續(xù)依賴于這種舊有的機制”。
不過對于 Linus 的回復,Steven 并沒有買賬,他堅持認為:
所有的文件和目錄應該有唯一的 inode,這樣做可以對文件系統(tǒng)的某些方面起到簡化的作用。
然而在幾輪探討過后,Linus 就坐不住了,隨即就出現(xiàn)了剛才怒懟的名場面:
不要把事情變得那么復雜。
你沒有充分理解這些函數(shù)的用途和必要性
你的代碼就是垃圾。
雙方似乎都是各執(zhí)己見,來來回回博弈了良久,從 1 月 26 日一直 battle 到了 1 月 29 日……
不過戲劇性的一點是,Linus 在爭吵之余,后來還發(fā)布了 Linux 內(nèi)核 6.8-rc2 版本。
他希望這個版本能夠解決之前版本中發(fā)現(xiàn)的問題,并鼓勵用戶進行測試。
并非第一次公開“交鋒”
其實在此之前,Steven 也曾在 2020 年初之際,在一場活動演講中,公開與 Linus“交鋒”過。
他甚至直接將演講的主題定位“Arguing with Linus Torvalds”,內(nèi)容依舊是圍繞著如何讓 Linux 效率得到改善而做出的建議。
不過對于這次最新的 battle,網(wǎng)友們也是各抒己見。
有認為應該拋棄歷史包袱的,有認為只是二人設計理念的差距:
你覺得呢?
參考鏈接:
[1]https://lkml.iu.edu/hypermail/linux/kernel/2401.3/04208.html
[2]https://www.youtube.com/watch?v=0pHImHVrI2I
[3]https://mp.weixin.qq.com/s/S0R_5OBSiSbDnl1-U6I4wg
本文來自微信公眾號:量子位 (ID:QbitAI),作者:金磊
廣告聲明:文內(nèi)含有的對外跳轉鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時間,結果僅供參考,IT之家所有文章均包含本聲明。