Linus Torvalds 对 Linux 6.9 的某些 Bcachefs 代码不满意

站长云网 2024-03-14 5iter.com 站长云网

自从Bcachefs文件系统被纳入Linux6.7内核的上游版本以来,它就一直保持着良好的运行状态。但今天,Bcachefs的功能更新被提交到Linux6.9合并窗口,而LinusTorvalds对其中的一些代码并不满意。

为Linux6.9提交的Bcachefs代码包括一些前期准备工作,如为子卷走读提供用户空间界面、改进目录结构检查、改进日志流水线以提高性能、改进丢弃路径以提高效率,以及其他优化。维护者肯特-奥弗斯特里特(KentOverstreet)将针对Linux6.9的Bcachefs改动的拉取请求总结为:

针对Linux6.9的Bcachefs更新9的bcachefs更新

-子卷的子btree;这是为走子卷提供用户空间接口所必需的,稍后会推出

-对目录结构检查的大量改进

-改进了日志流水线,显著提高了高深度写入工作负载的性能

-改进了丢弃路径:丢弃路径更加高效,不再不必要地刷新日志

-缓冲写入路径现在可以避免占用节点锁

-调出各种库代码供XFS使用:timestats、mean_and_variance、darray、eytzinger、thread_with_file

-新的毫米助手:memalloc_flags_{save|restore}

-mempool现在可以使用kvmallocmempool

但让LinusTorvalds感到不解的是,有些补丁将Bcachefs代码中的某些元素移到了一些库类型的代码中,这样其他文件系统就可以很容易地重复使用这些代码了--XFS就是对可能重复使用某些Bcachefs功能感兴趣的文件系统。

LinusTorvalds响应了Bcachefs的拉取请求:

,"stdio_redirect_printf()"和darray_char只是可怕的接口,没有任何解释。这些接口太恶心了。这些接口太恶心了。

,把它放在你自己的代码里,不要试图把它变成一个通用的库。

,如果你**把它变成一个库,它需要

(a)解释得更清楚

(b)有更合理的命名,减少恶心和完全无意义的接口("DARRAY()")。

但最让人头疼的还是那些疯狂的数学。

该死的,我们很久以前就讨论过那些愚蠢的"均值和方差"垃圾。

你没有解释为什么它不能使用简单得多的MAD(中位数绝对偏差)而使用方差。

这个错误的决定直接导致了毫无意义地使用过于复杂的128位数学。

当时我就说它设计过度,据我所知,除了一些细微的类型名称细节外,绝对没有任何变化。

但现在你却试图将这些垃圾代码作为通用库代码推给其他人使用,这立刻就意味着我**介意过度工程化的接口。

在其他方面,time_stats看起来就像一个有名称和用途的正常接口,但使用了可怕的基础架构后,它就失效了。

在Overstreet阐述了自己的观点后,Torvalds补充道

方差值是不同的,但MAD和标准偏差之间的区别基本上只是一个常数因子(不同的分布会有所不同,但那又怎样?)

那么,为什么一个常数因子会对指数加权产生任何影响呢?

总之,请把你的代码放在bcachefs中。

也许xfs也想拷贝你的代码。我不在乎,这看起来很蠢,但这是文件系统的选择。

但如果我们要让它成为一个通用的内核库,它就必须理智。不能为了一个随机的统计元素,就让人们做64位的平方根和128位的除法。

因此,从目前的情况来看,LinusTorvalds并没有接受这个针对Linux6.9内核的Bcachefs拉取请求,原因是提议的通用库代码。我们将拭目以待,看看未来几天是否会有新的拉取请求,放弃这些补丁或以其他方式重新修改,以满足Linux创建者的要求。

责任编辑:站长云网