Linux 6.13中的exFAT驅動程式減少了FAT鏈遍歷從而提高了效能
對於在Linux 系統中使用微軟exFAT 檔案系統的用戶,即將發布的Linux 6.13 核心帶來了一項最佳化,透過減少FAT 鏈的遍歷次數來幫助某些操作。在大多數情況下,Linux 6.13 中的exFAT 更新並不讓人感到興奮,這次除外。
根據週三晚上的拉取請求:
– 如果流條目起始群集無效,則將其作為空目錄處理。
– 蒸氣條目的有效大小不能大於資料大小。
如果valid_size 無效,則使用data_size 處理。
– 將Direct-IO 對齊檢查移至擴充有效大小之前。
– 修正syzbot 報告的uninit-value 問題。
– 優化在write_inode、rename、unlink 中尋找目錄條目集。
最後一項有趣的工作是優化寫入inode、重新命名和取消連結操作中的查找目錄入口集。
這項工作最終歸結為莫躍章為減少FAT 鏈遍歷而打的一組補丁。開發者Yuezhang Mo在該補丁系列中解釋:
“
在本次commit之前,exfat_inode_info的->dir和->entry記錄了父目錄的第一個簇,以及從該簇開始的目錄條目索引。
目錄條目集將在write-back-inode/rmdir/ unlink/rename 時取得。 如果父目錄的群集不連續,則將從父目錄的第一個簇開始遍歷FAT 鏈,以找到->entry 所在的群集。
在此提交後,->dir 將記錄目錄條目集中第一個目錄條目所在的簇,而->entry 將記錄簇中的目錄條目索引,因此在獲取目錄條目集時幾乎無需訪問FAT。 “
這應該是一項值得的優化,但補丁中沒有提供任何數字來量化重命名或刪除檔案/資料夾時避免FAT 鏈遍歷對效能的影響。無論如何,Linux 的exFAT 支援仍在繼續推進。