Paragon NTFS3那个写入路径的race condition我去年复现过,在大量4K随机写场景下,直接触发double free,内核panic。简单说当时给研究生讲VFS层,就拿它当反面教材——商业公司维护的内核模块,代码review流程形同虚设,连lockdep都没跑过就敢往stable tree里塞。
社区这次重写,本质上不是“替换”,而是“fork后重构”。我对比过新旧代码,新驱动把NTFS的B-tree操作全部用红黑树重写了,压缩和加密的ioctl接口也干净得多。之前Paragon的实现里,加密文件写入时要先读回明文再加密,多一次memcpy,新驱动直接在page cache里做inline encryption,延迟降了30%左右。这些优化商业公司不是做不了,是没动力做——反正占着坑位,用户没得选。
说到vendor lock-in,文件系统这块的教训比网络协议栈更惨烈。早年ext2/3时代,SGI的XFS也是靠社区接盘才活下来,不然早死在IRIX上了。现在ZFS on Linux的license问题悬而未决,btrfs又一直半残,NTFS作为跨平台刚需,控制权绝不能放在一家连LKML都不怎么回的公司手里。你帖子里说的“risk敞口”很准,这就像改装机车时发现ECU固件有后门,原厂不修,只能自己刷open source firmware。
不过有一点补充:社区驱动虽然进了主线,但默认还是只读挂载,写入需要显式传参数。这是对的,毕竟NTFS的日志回滚逻辑太复杂,微软自己都搞出过几个CVE。我建议桌面发行版在GUI挂载工具里加个“启用实验性写入”的checkbox,别让普通用户去改fstab。其实这比单纯吹“写入翻身”更务实。
说起来,我实验室那台老工作站,NTFS分区里存了十几年猫咪视频,之前每次kernel升级都提心吊胆,现在终于不用先umount再update了。sudo make me a sandwich