合并的新功能之一
Linux 6.6
内核是
多粒度时间戳
用于VFS层,并将其连接到EXT4、Btrfs、XFS和Tmpfs文件系统。这种粗粒度时间戳的替代方案最终暴露了一些问题,本周在Linux 6.6-rc3之前,该功能已从内核中完全剥离。
多粒度时间戳旨在解决当前粗粒度时间戳在更新创建/修改时间方面可能无效的情况,因为在每一瞬间的时间戳内可能会发生大量I/O。例如,NFS依赖于当前的粗粒度时间戳来验证缓存,希望这种多粒度时间戳更健壮。不过,多粒度时间戳只是为了避免性能开销而选择性地启用的。
微软的Christian Brauner最初为Linux 6.6提交了该功能,他继续提交了pull请求,因为放弃了短暂的内核功能,该请求已经得到了认可。他
解释
:
“当没有人主动查询细粒度时间戳更新时,内核会取消这些更新,以避免性能影响。因此,像write(f1)stat(f2)write(f2)stat(f2)write。
当程序比较时间戳时,这样的情节漏洞可能会导致微妙的错误。例如,nap()函数将估计,在后续调用之间,它需要在细粒度时间戳启用的文件系统上等待一纳秒才能观察到时间戳的变化。但通常情况下,如果我们认为没有人主动查询细粒度时间戳以避免性能影响,那么我们不会用多个jiffie来更新时间戳。
在讨论各种修复时,我们决定回到绘图板上,并最终探索一种解决方案,该解决方案只在内部向nfs公开这种细粒度的时间戳,而从不向用户空间公开。
由于讨论了多种解决方案,所以这里诚实的做法不是修复或禁用它,而是干净地恢复。通用基础设施可能会恢复,但没有理由将这些代码保留在主线中。“
因此,在短短几周后,在今天的Linux 6.6-rc3发布之前,多粒度时间戳代码已经从内核中删除。至少有
Linux 6.6的许多其他伟大功能
.