LWN:内核何时能合入bcachefs?

UsualToolCMS-验证码绕过漏洞复现 本文以UsualToolCMS为靶场,复现了验证码绕过漏洞 阅读详情
640点击上方蓝色字关注我们~



Bcachefs gets closer

By Jonathan Corbet
July 11, 2019


每当要给Linux增加新的文件系统支持的时候,耐心都是非常重要的。Btrfs花了多年才成熟,甚至有些人认为它仍然尚未完善。期待Tux3的用户,已经从2008年等到现在了,2018年的时候开发者仍然说在持续开发完善中。跟这些比起来,bcachefs还是很年轻的,大概4年前问世。这个下一代文件系统的开发一直持续进行中,bcachefs的开发者Kent Overstreet最近宣布他非常渴望“赶紧合进去”,不过目前仍然有一些阻碍。


bcachefs起源于bcache(Bcache是Linux内核块设备层cache,支持多块HDD使用同一块SSD作为缓存盘),不过后来变成一个独立的项目了。它也同其他那些新的文件系统类似,都使用了copy-on-write方式工作,也就是说数据写入的时候不会直接覆盖原有数据,而是写入一个新的未知。这样就能实现多种有意思的功能了,例如data checksumming(数据校验), compression(压缩), multiple-device(多设备支持),RAID,hierarchical storage management(多级存储管理),snapshot(快照),当然还有非常好的性能表现。bcachefs的进展比较缓慢,主要还是因为开发者获取的支持较少。Overstreet已经在Patreon发起众筹(译者注:强烈推荐看一下这个众筹,比较了多个Linux主流文件系统的优缺点:https://www.patreon.com/bcachefs  ),希望借此能推动项目快速前进。看起来众筹还是有些效果的,这个文件系统已经接近准备完成的状态了:“多年工作现在终于来到了一个值得纪念的日子了,非常期待能最终对外界发布的那一刻。”


希望尝试新文件系统的用户,估计很快会发现这个项目比较缺乏的还是文档。所以通常来说用户需要下载源代码,然后尝试着搭建起这个文件系统。不过至少bcachefs还是有个man page介绍了基本用法,开了个好头。


Overstreet认为bcachefs代码的状态已经达到合入mainline的标准了。不过用户还得再多等一会儿,目前还有一些阻碍,首先是Linus Torvalds对这个代码库管理方面提出了一些抱怨,清理这些东西需要花时间。


Core-kernel changes

除此以外,还有一些kernel核心代码需要改动才能支持bcachefs。Overstreet也很明白这里会引出不少反对意见。毕竟文件系统的特定实现方案里的代码改动不会影响其他那些不使用这个文件系统的用户,不过修改kernel核心部分的代码会产生广泛的影响了。所以目前虽然bcachefs代码本身还没有发到mailing list上,但是其他部分需要做的改动已经先发布上来进行review了。


其中一个改动是增加了一个新的lock实现,名为SIX lock。这种锁是reader/writer lock,不过勇气来很特别。通常的reader/writer lock允许很多reader来同时访问这个受保护的区域,而writer则必须是独占访问。SIX lock则不通,它把writer这边改成了两个步骤,所以需要写这些受保护的数据结构的代码需要先获取一个“intent" lock。这个"intent" lock只能有一个拥有者,这样第二个线程来抢"intent" lock的时候就会被阻塞住,等待第一个线程释放lock。但是拿到intent lock之后并不会阻塞reader的访问,reader线程仍然可以访问这个受保护的数据。

在需要真正写内容的时候,就要把intent lock升级为一个write lock,这样确保任何其他人(包括reader)也就无法再访问这个区域了。这个方案的好处是在intent lock阶段,writer就能访问这部分数据(只是不能写入而已),这样writer就能减少它独占数据并且其他reader无法访问的时间长度,从而改善并发行。

Overstreet认为SIX lock"看起来并没有太多争议"。不过Torvalds确实建议最好能把这个“intent”阶段加到kernel的rwsem lock架构里去,而不是引入一个全新的lock机制。Dave Chinner反对这个观点,他觉得rwsem已经太脆弱了,不要再增加它的复杂性了。目前最终怎么做还没有达成一致,不过看起来SIX locks到时候应该还是能够得到合入的。


此外,还有一个新增的锁机制,称为pagecache_lock。针对每个地址空间都有一个pagecache_lock,目的是管制在page cache里新加page的动作。这个锁可以有两种获取模式,分别是add和block。前者是用于新增page的时候,而后者是用来阻止其他人新增page。多个线程可以同时获取同一个锁,只要他们都用同一个工作模式。这样多个线程就能同时增加page到page cache了。而如果修改了所得模式,就需要引入一些等待了。Torvalds不喜欢这个锁机制,认为“我们不需要这种hacky recursive things”。

Overstreet也赞同这个lock机制不是很完美,他说“这个实现故意做的特别难看,就是因为期待有人能提出一个更优雅的解决方案”。这招在Linux社区里通常确实很有效。不过他认为这个lock机制的存在是非常必要的。目前kernel里面,很多操作(例如direct I/O)都会把page从page cache里摘除掉,否则这些绕过page cache的访问就可能导致数据出错。不过没有任何机制能阻止系统在page fault的时候再把这些page加回page cache,无论是user-space代码,还是kernel的自动提前预取功能等等机制都可能导致这个行为。如果page在错误的时间重新加入cache,那么就会导致数据错误。


这个问题大家都赞同是确实存在的,不过关于解决方案,有很多不同观点。Torvalds建议应该加入某种page-level locking机制。Chinner则在准备一个range lock机制有可能能解决问题,他还认为会有越来越多的I/O操作都期望彻底绕过page cache。Matthew Wilcox提了另一个方案,就是禁止buffered I/O操作在有direct I/O进行的时候add page到page cache,不过有时候direct I/O的行为其实也跟buffered I/O一样,尤其是相关的page早已经在cache中存在的时候。


目前这个问题目前在mailing list里面尚未讨论出个结论。有多种建议提出,而Overstreet需要证明给大家看他自己的方案是最棒的。


最后,在bcache代码中还有一个“closure”机制。这里的closure本质上是一个reference count,以及相应的用于在等待某些事件发生的一些API。Overstreet希望把closure代码移到lib目录下去,这样就能有更多地方利用这个机制。虽然大多数reviewer觉得无所谓,Christoph Hellwig则强烈反对这个建议。不过他目前还没有仔细讲解为什么反对。


因此,看起来还是有几个问题需要解决的,甚至bcachefs的代码本身还没有开始让大家review,这部分后续肯定也是需要仔细审查的。文件系统开发者根据历史经验,非常确信如果在文件系统代码尚未成熟之前合入,会引出很多长远问题。所以尽管bcachefs看起来非常有用、进展也很快,但是看起来大概率还是无法很快合入mainline kernel。


全文完

LWN文章遵循CC BY-SA 4.0许可协议。

极度欢迎将文章分享到朋友圈 
热烈欢迎转载以及基于现有协议上的修改再创作~


长按下面二维码关注:Linux News搬运工,希望每周的深度文章以及开源社区的各种新近言论,能够让大家满意~


640?wx_fmt=jpeg

电容式三点式振荡电路/电感式三点振荡电路基础知识及Multisim电路仿真 摘要:三极管振荡电路利用放大特性与正反馈实现自激振荡,需满足巴克豪森条件(增益≥1,相位匹配)。核心由放大级、反馈网络、选频网络和稳幅环节构成。主要分为三类:1)LC/RC正弦波振荡电路(如电容三点式、电感三点式),输出高频/低频正弦波;2)多谐振荡电路,通过电容充放电产生方波;3)张弛振荡电路,生成锯齿波等。设计需关注相位匹配、增益控制和元件适配。LC振荡频率由谐振参数决定,RC振荡由时间常数控制。稳幅机制通过非线性或主动元件维持等幅输出。该电路在信号发生、时钟源等领域有广泛应用。 阅读详情

相关推荐

S-function入门及案例详解(3)——S-function进阶案例

目录1.案例描述2.案例详解3.输出波形4.对输入参数进行Mask打包 1.案例描述 设计一个蹦极系统 h为离地面高度,输入参数为长度、质量、离地面高度。 2.案例详解 步骤1.可以修改sfuntmpl函数的名称(这里修改为bengji),并在括号内增加输入参数 参数len,weight,dist分别表示长度、质量、离地面高度;长度用来初始化x0,质量用来初始化m,离地面高度用来初始化h。 function [sys,x0,str,ts,simStateCompliance] = bengji(t,x,u

Wendy的博客 1万+

bcachefs文件系统

重要提示:在决定使用Bcachefs之前,建议仔细考虑该文件系统的实验性质、目前的开发状态以及您的具体需求。尽管在测试和验证中取得了良好的结果,但使用Bcachefs时需要注意实验性和可能的不稳定性。高性能:Bcachefs采用了许多先进的技术和算法,以实现高性能的数据访问。它使用了类似于Btrfs和ZFS的写时复制(Copy-on-Write)技术,提供了快速的读写操作和高效的存储利用率。不成熟的工具和生态系统:随着Bcachefs的普及,与其相关的工具和生态系统的发展可能相对较慢。

本人任职于安超云技术架构部,拥有十余年云计算与AI经验。专注AI基础设施、分布式集群、高可用架构、虚拟化、存储、网络及数据库等领域。博客内容以学习笔记为主,力求准确,但个人能力所限,难免疏误。非常欢迎交流指正,期待与您共同探讨技术 2714

【SEED Labs 2.0】V*N Tunneling Lab

本文为 SEED Labs 2.0 - V*N Tunneling Lab 的实验记录。本实验工作量较大,但难度不大,重点在于搞清是谁发给谁,走的什么路径。另外,本次实验由于网络中的设备较多,修改了环境变量方便分清哪个窗口是哪个设备。这样操作起来就方便多了。...

Chenyang的博客 6974

LWN:合入bcachefs!

关注了就能看到更多这么棒的文章哦~Merging bcachefsBy Jake EdgeJune 16, 2023LSFMM+BPFDeepL assisted translationhttps://lwn.net/Articles/934692/bcachefs 文件系统及其推送到 upstream 的过程是 bcachefs 的创建者 Kent Overstreet 在 2023 年 Lin...

Linux News搬运工 1534

【Q1/论文复现】:利用 CHARLS 数据库考察抗高血压药物依从性和认知衰退

摘要: 北京大学团队基于CHARLS数据(2011-2018)的纵向研究发现,抗高血压药物高依从性能显著延缓中国45岁及以上社区中老年人的认知衰退。研究表明,坚持服药者7年内全局认知衰退速度降低0.014SD/年,记忆功能衰退减缓0.023SD/年,效果接近正常血压人群水平。研究还提示社会经济地位(SES)可能通过影响用药依从性间接调控认知衰老进程。该成果为高血压管理对认知保护提供了人群级证据,发表于《BMC Medicine》(DOI:10.1186/s12916-025-03949-8)。

dingdianbangni的博客 809

【高低温试验】试验报告模板

高低温循环试验,验证被测设备(DUT)在极端高温、低温环境下的性能稳定性、功能可靠性及安全性,确保其符合设计规范和相关标准(如GB/T 2423.1、GB/T 2423.2)。:验证设备在剧烈温度变化下的耐受能力(如-40℃↔+85℃,温变速率≥10℃/min)。低温测试标准:GB/T 2423.2-2008(温度-40℃,保持时间4小时):模拟高温高湿环境(如温度+60℃,湿度95%RH),测试防潮性能。

电路巫师把一切不可能变成不可能 1565

linux cache fs,新闻|Linux 上将出现一个新的文件系统:bcachefs

这个有 5 年历史,由 Kent Oberstreet 创建,过去属于谷歌的文件系统,最近完成了全部关键组件。Bcachefs 文件系统自称其性能和稳定性与 ext4 和 xfs 相同,而其他方面的功能又可以与 btrfs 和 zfs 相媲美。主要特性包括校验、压缩、多设备支持、缓存、快照与其他“漂亮”的特性。Bcachefs 来自 bcache,这是一个块级缓存层。从 bcache 到一个功能完...

weixin_36098968的博客 1039

网格自适应_Comsol案例解析17:自适应网格的使用

本期导读自适应网格细化有许多优势,比如可以不用对网格进行全局加密,增加计算精度,又会降低求解自由度。本期仍然以气泡上升案例为例,在两相流模块中使用自适应网格。【打开案例模型】【修改网格】适当让气泡边界加密,注意,曲率因子越小,曲线上的网格越密【添加自适应网格】使用默认的参数即可,这里的误差指示器用的是水平集phi。可以根据具体求解模型选择适当的自变量作为误差指示器。【口诀】默认的一般是最...

weixin_28726871的博客 5681

Bcachefs 工具项目教程

Bcachefs 工具项目教程 1. 项目介绍 Bcachefs 是一个先进的 Linux 文件系统,专注于可靠性和稳健性,并提供现代文件系统所需的所有功能。该项目主要由以下部分组成: bcachefs 工具:这是该仓库的主要工具,包括 mkfs、mount 和 fsck 等命令。 bcachefs 实用程序:这些是调用主工具中相应子命令的包装器。 文档:包括手册页和用户手册。 Bcachef...

gitblog_00156的博客 683

YOLOv8多传感器融合技术——毫米波雷达融合技术详解

本文介绍了YOLOv8与毫米波雷达融合技术在自动驾驶系统中的应用。毫米波雷达具有全天候工作、测距测速精准等优势,但存在分辨率低等局限。通过融合YOLOv8的视觉检测能力,可显著提升系统在恶劣环境下的感知性能。文章详细阐述了融合实现方法,包括雷达数据处理、目标投影匹配、置信度融合等关键技术,并提供了评估指标和应用场景分析。这种多传感器融合方案能有效弥补单一传感器的不足,为自动驾驶提供更可靠的环境感知能力,是实现高级别自动驾驶的重要技术支撑。

u010117029的博客 174

玩转企业微信群机器人:一份超详细的Webhook消息推送指南

企业微信群机器人是一个连接内部协作与外部服务的强大桥梁。通过灵活运用本文介绍的各种消息类型,你可以构建出丰富多彩、信息明确的自动化通知系统,极大地提升团队沟通效率。现在,就动手试试,将你的第一个机器人集成到工作流中吧!如果你有任何有趣的机器人应用场景或遇到了问题,欢迎在评论区留言交流!

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 3974

Linux 新文件系统 Bcachefs

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33704234的博客 365

UNet改进(12):融合小波变换与注意力机制的图像分割新方法

本文提出了一种改进的WaveletAttentionUNet架构,通过结合小波变换和注意力机制来增强传统UNet的多尺度特征提取能力。该网络使用分组卷积模拟小波分解,将输入通道扩展为4个子带(LL、LH、HL、HH),并通过通道注意力机制自适应加权各子带特征。网络保留了UNet的编码器-解码器结构,在关键位置集成了WaveletAttention模块。实验证明该方法在医学图像分割等任务中能更好地保持边缘细节和复杂纹理特征,同时保持计算效率。

2501_91516851的博客 758

Linux内核或将移除Bcachefs文件系统

另一种情况是,可以构建一个使用FUSE子系统的版本,该子系统允许文件系统代码在内核本身之外运行。或者,可以在内核更新时按需构建代码:有一个标准工具叫做DKMS,这就是运行Nvidia显卡驱动程序的人获得驱动的方式。代码提交(在Git版本控制系统术语中称为"拉取请求")在此期间继续进行,但它们应该是错误修复,而且只能是错误修复。说实话,在这种情况下,我真的不再愿意参与其中,我们在讨论中唯一真正达成共识的是'我们结束了'。"我已经拉取了这些代码,但正如讨论中提到的,我认为我们将在6.17合并窗口中分道扬镳。

至顶AI实验室 424

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

LWN:6.14合并窗口第一部分!

关注了就能看到更多这么棒的文章哦~The first part of the 6.14 merge windowBy Jonathan CorbetJanuary 23, 2025Gemini-1.5-flash translationhttps://lwn.net/Articles/1005651/截至本文撰写之时,已有超过 4300 个非合并变更集 (non-merge changeset) ...

Linux News搬运工 963

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

LWN:针对可执行代码的另一个内存分配方案!

关注了就能看到更多这么棒的文章哦~Yet another memory allocator for executable codeBy Jonathan CorbetJune 8, 2023DeepL assisted translationhttps://lwn.net/Articles/933867/内核的代码越来越动态了,也就是随时会出现新的 text 段代码。目前,为新内核代码分配内存的责...

Linux News搬运工 1110

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

LWN:6.7 开发周期的数据统计!

关注了就能看到更多这么棒的文章哦~Some 6.7 development statisticsBy Jonathan CorbetJanuary 8, 2024ChatGPT translationhttps://lwn.net/Articles/956765/内核 6.7 版本在经过十周的开发周期后,在 1 月 7 日发布了。这个周期里因合并的变更集数量最多而成为历史上最繁忙的一个周期。现在是...

Linux News搬运工 272

LWN:6.7合并窗口的第一部分!

关注了就能看到更多这么棒的文章哦~The first half of the 6.7 merge windowBy Jonathan CorbetNovember 3, 2023ChatGPT translationhttps://lwn.net/Articles/949294/自 6.7 合并窗口打开以来,截至本文写作时已有 9,842 个非合并的变更集(non-merge changeset)...

Linux News搬运工 885

bcache状态和配置文件详细介绍(翻译自官网)

参考文献 http://www.cnblogs.com/zimufeng/p/6640439.html https://www.kernel.org/doc/Documentation/bcache.txt 声明: 文中 斜体带下划线  的段落为翻译不够准确的段落 原文:https://www.kernel.org/doc/Documentation/bcache.txt

雪峰流云 1万+

bcache配置使用

  一、前言 简单介绍下bcache,bcache是linux内核块设备层的cache。主要是使用SSD盘在IO速度较慢的HDD盘上面做一层缓存,从而来提高HDD盘的IO速率。一个缓存设备(SSD)可以同时为多个后端设备(HDD)提供缓存。既然是缓存,那自然就会想到缓存策略,bcache支持三种缓存策略: writeback:回写策略,所有的数据将先写入缓存盘,然后等待系统将数据回写入后端数...

AXW2013的专栏 4671

Linus移除Bcachefs:内核大地震。

Bcachefs 是一个备受期待的文件系统,曾被寄予厚望成为 ZFS 和 Btrfs 的竞争者。这一决定引发了开发者社区的广泛讨论,尤其是考虑到 Bcachefs 的开发者 Kent Overstreet 曾长期努力将其合并到主线内核。Bcachefs 的设计目标是解决 Btrfs 的稳定性问题,同时避免 ZFS 的许可问题(ZFS 因 CDDL 许可证与 GPL 不兼容而无法并入 Linux 内核)。然而,尽管技术上有潜力,Bcachefs 的代码质量和维护问题最终导致其被移除。

fJS_8v2c的博客 333

Linux内核风云:Bcachefs文件系统与Linus Torvalds的流程之争

在Linux 6.16-rc3候选版本阶段,Kent提交了journal_rewind功能补丁,这个约70行的代码允许文件系统回滚到较早状态点用于数据恢复。Bcachefs作为新一代文件系统,2024年初才被纳入Linux 6.7主线内核,其设计目标是结合Btrfs的灵活性和ext4的稳定性,支持写时复制、快照等现代功能。无论Bcachefs最终命运如何,这次争论都将推动Linux社区思考:在保持稳定性的同时,如何为突破性创新提供更合理的接纳机制?这可能影响未来十年文件系统技术的发展轨迹。

IronwoodPanther89的博客 683

推荐开源项目:bcachefs-tools —— 高可靠性文件系统的用户工具集

推荐开源项目:bcachefs-tools —— 高可靠性文件系统的用户工具集 项目介绍 Bcachefs 是一款专为 Linux 设计的先进新型文件系统,注重可靠性和健壮性,同时具备现代文件系统应有的完整功能集。bcachefs-tools 项目则提供了与 Bcachefs 相关的用户空间工具和文档,旨在帮助用户更便捷地使用和管理 Bcachefs 文件系统。 该项目主要包括以下内容: bca...

gitblog_00557的博客 1156

Bcachefs被移除:Linux内核争议始末

它结合了 Bcache 的缓存层和文件系统的功能,旨在提供高性能、高可靠性和丰富的功能集,如快照、压缩和加密。尽管 Bcachefs 在社区中拥有一定的支持者,但其代码质量和稳定性一直存在争议,最终导致 Linus Torvalds 决定将其从 Linux 6.18 内核中完全移除。Linus Torvalds 在邮件列表中明确表示,Bcachefs 的维护模式不符合内核开发的标准流程,因此决定将其移除。以下是一个简单的 Bcachefs 文件系统挂载和使用的代码示例,展示了其基本操作流程。

jIW_af6z的博客 418

Linux文件系统

Linux 文件系统是一个多层面的结构,由三个基本层组成。从根本上来说,逻辑文件系统充当用户应用程序和文件系统之间的接口,管理打开、读取和关闭文件等操作。除此之外,虚拟文件​​系统有利于多个物理文件系统的并发操作,提供标准化的兼容性接口。最后,物理文件系统负责磁盘上物理内存块的有形管理和存储,确保高效的数据分配和检索。这些层共同形成一个有凝聚力的架构,协调 Linux 操作系统中数据的组织和高效处理。

Jet_58的博客 1073

【读书笔记】「等到 Linux 6.17 就分手」:Bcachefs 背后的技术与流程之争

Bcachefs 是 Kent Overstreet 一手打造的文件系统项目,目标是整合 Btrfs 的灵活性与 ext4 的稳定性。它支持现代文件系统的关键特性:写时复制(COW)、快照、压缩、校验等,并于 2024 年正式并入 Linux 6.7 主线内核。Linus 坚持流程有其合理性,在外界有些群体看来方式略显强硬;Kent 推送补丁的行为本意为善,但操作方式欠缺沟通与透明;Linux 内核开发机制或许需要引入“紧急改动审查流程”,作为常规机制之外的特例绿色通道。

YZJincsdn的博客 1553
上一篇: LWN: OSPM会议讨论如何测试scheduler行为
下一篇: LWN: Linux 5.3合入窗口进展 part 1
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值