转自:OSC开源社区(id:oschina2013)
! E* X8 y9 I* ]/ v7 EBcachefs 文件系统自从被纳入 Linux 6.7 内核的上游版本以来,一直保持着良好的运行状态。但现如今,随着 Bcachefs 的功能更新被提交到 Linux 6.9 合并窗口,引发了 Linus Torvalds 对其中一些 proposed code 的不满。维护者 Kent Overstreet 将针对 Linux 6.9 的 Bcachefs 改动的拉取请求总结为:; P E& g# e% v7 N7 C, G
Subvolume children btree;是为 walking subvolumes 提供用户空间界面所必需的,计划在稍后提供
2 y; |6 F2 D7 b对目录结构检查进行了大量改进/ c5 o( W5 K0 f2 s- x
改进了日志管道,显着提高了 high iodepth write workloads 的性能
% O+ h% ^# m5 V( U3 iDiscard path 改进:Discard path 更加高效,并且不再不必要地刷新日志
( d3 c3 B: ?. n gBuffered write path 现在可以避免占用 inode lock
) l T4 I" h3 s8 D! D# l: ? }$ l调出用于 XFS 的各种库代码:time stats、mean_and_variance、darray、eytzinger、thread_with_file( W9 N* ]1 W, f5 A0 {; ^! \6 ?( I
新的 mm helper:
! g% U/ Y6 H) x. D: I9 [memalloc_flags_{save|restore}4 Q8 l7 g1 V3 S- @6 e
mempool now does kvmalloc mempools
8 z; T* {. g$ H1 h$ k( ^, M! Z- b. S& j但让 Linus Torvalds 感到不解的是,这些补丁把 Bcachefs 代码中的一些元素移到了一些 library-type 的代码中,以至于可以轻松地被其他文件系统重用。
! }% J, V8 r* Z' R+ s* |Linus Torvalds 在回应相关 PR 时表示:“我看了看 'make random bcachefs code be a library function' 的内容,觉得毫无意义,最终决定在没有进一步解释的情况下我不会使用它(老实说,我不认为这些解释站得住脚)。”
6 e) I2 c" x! n并直言 "stdio_redirect_printf ()" 和 darray_char 都很“恶心”——建议 Overstreet 将其保留在自己的代码中就好,不要试图提交上来。& F7 d# Z- W0 Y) u9 U- u1 k
如果实在不死心的话,建议他先做好以下几点:
3 y. H( {; h5 n* n' F多添加注释
3 D. i" T; X9 `* q, X; _) {8 F进行更合理的命名,减少恶心和完全无意义的 interfaces ("DARRAY ()")。
$ z4 Y( b* Z' M& |7 h" g- r5 D% T
rdbankycolt64067736702.png
4 G, f, \! F' U( i
而且,仅仅找到一个其他文件系统来共享这种代码并不足以证明它是一个合理的 interfaces 和合理的命名。
4 u4 G7 n' R2 G$ y1 X但是,最主要的问题是疯狂的数学计算。该死的,我们很久以前就讨论过 "mean and variance" 这种愚蠢的垃圾。当时就错了,现在还是错的。你没有解释为什么它不能使用简单得多的 MAD(median absolute deviation),而不是使用 variance。这个错误的决定直接导致无意义地使用过于复杂的 128 位数学。- G. ~ d3 `& n+ h+ j, j8 x( k7 z
我当时称其为疯狂的过度工程化,而就我所知,除了一些轻微的类型名称细节外,绝对没有任何变化。% W3 e2 u5 g, d1 f3 |7 R3 B! V
只要你把它改成某种只适用于 bcachefs 的东西,我就不介意。但现在,你却试图把这些垃圾作为通用库代码推向市场,让其他人也能使用,这就意味着,我会介意这种过度设计的 interfaces。( q+ B7 \4 w2 ?8 }
在其他方面,time_stats 看上去就像是一个有名称和用途的正常 interfaces,但使用了这种可怕的基础架构后,它就变得不伦不类了。
) _# Q& w( N% _在 Overstreet 争辩之后,Linus 进一步补充道:
) R4 O0 W! w. a7 e, J/ s加权版本的代码字面上没有任何变化。
) Z4 R# ]) P* j4 [% [2 u0 g6 Ovariance value 是不同的,但 MAD 和 standard deviation 之间的区别基本上只是一个 constant factor(不同的分布会有所不同,但那又怎样?任何特定情况都会有特定的分布)。那么,为什么 constant factor 会对指数加权产生任何影响呢?
& l, ^* p* h$ a2 s+ U不管怎样,请随意将您的代码保存在 bcachefs 中。也许 xfs 甚至想复制该代码。我不在乎,这看起来很愚蠢,但这是文件系统的选择。但如果我们要把它打造成一个通用的内核库,它就必须是健全的。不要让人们仅仅为了随机统计元素而进行 64 位平方根和 128 位除法。
, q' k' b7 T4 J7 t, I6 _1 ?* L因此,就目前情况而言,Linus Torvalds 并没有接受这个针对 Linux 6.9 内核的 Bcachefs 拉取请求。至于后续如何,就要看新的 PR 会不会放弃这些补丁或以其他方式重新修改以满足 Linus 的要求。相关链接https://lore.kernel.org/lkml/CAHk-=wg3djFJMeN3L_zx3P-6eN978Y1JTssxy81RhAbxB==L8Q@mail.gmail.com/2 o( Q/ W4 N5 x/ l0 n( f
——EOF——你好,我是飞宇,本硕均于某中流985 CS就读,先后于百度搜索、字节跳动电商以及携程等部门担任Linux C/C++后端研发工程师。
# b8 ~8 a( l2 g, d8 V最近招聘季快到了,身边很多小伙伴都在摩拳擦掌、跃跃欲试,很多都打算看看新机会,这里推荐一个好朋友阿秀开发的互联网大厂面试真题解析网站,支持按照行业、公司、岗位、科目、考察时间等查看面试真题,有意者欢迎体验。0 u* O& z6 y- ~
如果你明天就要面试了,那我建议你今晚来刷一刷这个网站,说不定就能遇到你明天的面试原题,目前已经有不少人在面试中遇到原题了,具体可以看下链接:字节跳动后端研发岗面试考察题目Top10、面试中局部性原理还真有用!
4 q0 S( b2 C& q+ K4 Z2 L
n5wdkp2wwlk64067736802.png
0 j, s7 m8 \' [- S& i5 R% a
网址:https://top.interviewguide.cn/
; N3 p% Q+ Z3 D& l1 m同时,我也是知乎博主@韩飞宇,日常分享C/C++、计算机学习经验、工作体会,欢迎点击此处查看我以前的学习笔记&经验&分享的资源。# X! @8 `8 h3 \ d
我组建了一些社群一起交流,群里有大牛也有小白,如果你有意可以一起进群交流。1 f5 R9 X6 H* n$ i
e5rfehcemtg64067736903.png
?9 D1 @- T* Y6 V, y
欢迎你添加我的微信,我拉你进技术交流群。此外,我也会经常在微信上分享一些计算机学习经验以及工作体验,还有一些内推机会。
: ?; w& E2 B6 E7 Q
& X' a6 X# R5 i4 P
ix5ruobwnim64067737003.png
9 m" b! T$ \: U加个微信,打开另一扇窗2 Y. P d" B- w! ?" g) S
elbswq5hkl564067737103.gif
# [7 o$ @1 p* o5 \ T' E/ ]5 K. n7 [$ Q+ c# l. W
程序员的那些事儿91; M& Y! s2 o- w
程序员的那些事儿 · 目录& L5 @+ E+ I O+ \9 C6 N
. {7 { X& t* Y, n2 e+ s0 Z W7 z( Q上一篇从腾讯离职了,四年工作总结 |