01-神魔宇宙 ***宇宙天國首部曲 彌勒天書閣 https://maitreya-books.com/ 神話從來就不是怪力亂神,而是原始先民在日常生活情況的觀察之中,所建立的真實認知。唯有相信神話中的真實,才能感受到神話的詩意隱喻背後,所具有的神聖力量。打開你的想像,打開你的相信,你才能知道神話告訴了你什麼宇宙生命的資訊。 生命起源於宇宙之中,生長於宇宙之中,結束於宇宙之中,因此,宇宙的起源就是生命背景的起源。生命形成的每一個階段,其實都在述說著生命的本能,也就是生命本就存在的一種力量,在此雖是說明一種狀況,然而將這狀況投射在生命的生活行動之中,你就會明白自己究竟有哪些不可思議的本能!

Linus新年首罵:和谷歌大佬大吵4天,“你的代碼就是垃圾”

2024013019:21

風風火火的Linux之父,Linus Torvalds,他又躍入公衆的視線。

“打開方式”依舊是熟悉的配方——罵人。



我們先來看下Linus怒怼的名場面:你的代碼就是垃圾。

 我要把你丟進垃圾郵件一周。



而這一次的“受害者”,是來自谷歌的一位程序員,Steven Rostedt。

而且他並非是隨隨便便的一位開發者,用網友的話來說“也算是大佬了”。



△圖源:“OSC開源社區”評論區

不僅如此,從時間線上來看,雙方已經交鋒了足足有4天之久……

那麽這到底是怎麽一回事?

* 一個“inodes”,吵了四天

這場激辯是發生在Linux內核郵件列表。

Steven起初是發了個帖子,主題是關于eventfs(事件文件系統)的補丁。

具體而言,就是想探討一下inodes(索引節點)是否應該保持唯一性的問題。



(注:inodes是Linux文件系統中的一個核心概念。它是一個數據結構,用于存儲文件或目錄的元數據,而不是文件的實際內容。)

Steven認爲: Linus之前建議在eventfs中使用相同的inode來簡化getdents()的實現,這意味著所有文件和目錄都將使用相同的inode。

    然而,這種做法後來被發現會導致“find”命令出現問題,因爲目錄和文件的inode相同。

    Linus隨後發現在64位機器上,eventfs_inode結構中存在一個由于對齊而産生的空洞,可以用來存儲目錄的inode,這解決了目錄的問題,但文件仍然保留了自己的inode。

在Steven看來,由于tar命令依賴于inode來確定文件的唯一性,這種做法會破壞tar命令的功能:

    目前,tar命令在tracefs(事件文件系統的一個變體)中已經出現問題,因爲它顯示所有文件的大小爲零,導致tar不複制任何內容。

除此之外,Steven也給出了自己想到的解決辦法——建議將VFS層的get_next_ino()函數複制到tracefs的tracefs_get_next_ino()函數中,並添加一個“files”參數。



這樣,當創建eventfs目錄時,就可以預先知道所需的inode數量。tracefs_get_next_ino()將返回一個新的inode,並預留下一個“files”個inode供調用者使用。

當創建文件的inode時,其inode將是其父目錄的inode加上在該目錄文件數組中的索引,從而爲每個文件提供一個唯一的inode。

然而,如此提案卻被Linus強烈反對。

Linus的核心觀點是“inode已經不再是唯一的描述符,我們不應該繼續依賴于這種舊有的機制”。

不過對于Linus的回複,Steven並沒有買賬,他堅持認爲:

    所有的文件和目錄應該有唯一的inode,這樣做可以對文件系統的某些方面起到簡化的作用。

然而在幾輪探討過後,Linus就坐不住了,隨即就出現了剛才怒怼的名場面:不要把事情變得那麽複雜。

    你沒有充分理解這些函數的用途和必要性

    你的代碼就是垃圾。

雙方似乎都是各執己見,來來回回博弈了良久,從1月26日一直battle到了1月29日……



不過戲劇性的一點是,Linus在爭吵之余,後來還發布了Linux內核6.8-rc2版本。

他希望這個版本能夠解決之前版本中發現的問題,並鼓勵用戶進行測試。

* 並非第一次公開“交鋒”

其實在此之前,Steven也曾在2020年初之際,在一場活動演講中,公開與Linus“交鋒”過。

他甚至直接將演講的主題定位“Arguing with Linus Torvalds”,內容依舊是圍繞著如何讓Linux效率得到改善而做出的建議。



不過對于這次最新的battle,網友們也是各抒己見。

有認爲應該抛棄歷史包袱的,有認爲只是二人設計理念的差距:



△圖源:“OSC開源社區”評論區

你覺得呢?---[金磊 發自 : 凹非寺*量子位 : 公衆號 QbitAI/來源: 量子位]

參考鏈接:
[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