对于在Linux系统中使用微软exFAT文件系统的用户,即将发布的Linux 6.13内核带来了一项优化,通过减少FAT链的遍历次数来帮助某些操作。在大多数情况下,Linux 6.13中的exFAT更新并不让人感到兴奋,这次除外。
`_OrBu[ D/."0 #q 根据周三晚上的拉取请求:
"x=\mA#` N:| :L:<1 -如果流条目起始集群无效,则将其作为空目录处理。
0<\|D^m=&h :,JaOn' -蒸汽条目的有效大小不能大于数据大小。
)xV37] Cj8&wz}ez 如果valid_size无效,则使用data_size处理。
ZgxB7zl// G9Uc
}z -将Direct-IO对齐检查移至扩展有效大小之前。
~k?rP}>0 +zMPkbP6 -修复syzbot报告的uninit-value问题。
)C8^'*! ~TRC-H -优化在write_inode、rename、unlink中查找目录条目集。
QLO;D)fC c{/R?< 最后一项很有趣的工作是优化写入inode、重命名和取消链接操作中的查找目录入口集。
xOe1v9< jDY
B*Y^F 这项工作最终归结为莫跃章为减少FAT链遍历而打的一组补丁。开发者Yuezhang Mo在该补丁系列中解释道:
4<#ItQ( 5Z!$?J4Rl "在本次commit之前,exfat_inode_info的->dir和->entry记录了父目录的第一个簇,以及从该簇开始的目录条目索引。
\yJ
4+vo2Q KNAvLcg 目录条目集将在write-back-inode/rmdir/unlink/rename时获取。如果父目录的簇不连续,则将从父目录的第一个簇开始遍历FAT链,以找到->entry所在的簇。
)-3~^Y#r_ 'lZlfS:Z8 在此提交后,->dir将记录目录条目集中第一个目录条目所在的簇,而->entry将记录簇中的目录条目索引,因此在获取目录条目集时几乎无需访问FAT。"
D j9aTO ~][~aEat;V 这应该是一项值得的优化,但补丁中没有提供任何数字来量化重命名或删除文件/文件夹时避免FAT链遍历对性能的影响。无论如何,Linux的exFAT支持仍在继续推进。
YP02/*'