首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
Linux cifs.ko 开发路线图:从 SMB3/SMB3.1.1 待办特性到测试计划的全景解读
📅 2026/9/8 20:54:48
✍️ 爱科研究院
👁 阅读 3,247
Linux cifs.ko 开发路线图从 SMB3/SMB3.1.1 待办特性到测试计划的全景解读【免费下载链接】linuxLinux kernel source tree项目地址: https://gitcode.com/GitHub_Trending/li/linux导读Linux 内核中的 CIFS/SMB3 客户端模块cifs.ko源码位于 fs/smb/client是连接 Samba、Windows、Azure 与各类 NAS 的桥梁。本文以内核文档 Documentation/admin-guide/cifs/todo.rst 为骨架系统梳理该模块截至 6.7 内核的未完成特性清单、已知缺陷跟踪方式与建议测试项并结合当前仓库内核 7.3.0-rc1中 fs/smb/client 的真实实现逐一印证哪些缺口已经落地、哪些仍停留在TODO状态。读完本文你将了解 cifs.ko 的能力边界、每一处待办对应的源码位置以及如何为其贡献代码。说明本文核心依据是内核文档 todo.rst其快照日期标注为 As of 6.7 kernel。当前仓库 Makefile 显示内核版本为 7.3.0-rc1因此文中将当时缺、现在有源码证据与至今仍未实现两类分别标注所有状态判断均以当前仓库源码为准。一、SMB3 / SMB3.1.1 缺失的可选特性原文 a 项todo.rst 中列出的第一类待办是 SMB3含 SMB3.1.1协议族中仍未实现或未做完善的可选特性。我们逐项对照当前源码1. 多通道multichannel的性能优化与算法化信道选择基础多通道multichannel支持已经存在——搜索 fs/smb/client 源码可见multichannel/chan_count遍布 cifsglob.h、connect.c、sess.c、transport.c、smb2transport.c 与 fs_context.c说明客户端具备建立多条 TCP 会话并复用的能力。TODO 清单中仍未满足的是性能优化与算法化信道选择algorithmic channel selection即如何根据链路质量、负载与服务器能力智能地在多条信道上分发请求而不仅是静态的通道复用之。这属于典型的基础在、调度策略待精进的开放课题。2. 目录租约directory leases优化cached_dir.c / cached_dir.h 的存在表明目录句柄缓存与目录租约已有实现基础但 TODO 仍将目录租约优化列为待办方向上包括更大范围的目录缓存命中率提升、与 compound复合请求的配合等。3. 更快的报文签名GMACTODO 要求支持基于 GMAC 的更快签名算法。对照源码当前协商阶段仍然只填充了 AES-CMAC在 smb2pdu.c 协商上下文中可以看到pneg_ctxt-SigningAlgorithms[0] cpu_to_le16(SIGNING_ALG_AES_CMAC); /* TBD add SIGNING_ALG_AES_GMAC and/or SIGNING_ALG_HMAC_SHA256 */注释中的TBD直接印证该特性至今仍属未完成状态。签名实际计算路径 smb2transport.c 与 cifsencrypt.c 目前也主要基于aes_cmac_*系列原语。此外 cifsglob.h 中保留了enable_negotiate_signing注释为 request use of faster (GMAC) signing if available说明协商启用 GMAC的开关架构已预留但算法实现未到。4. 网络传输压缩todo.rst 将其列为缺失项而在当前仓库中fs/smb/client/Kconfig 已提供实验性开关CIFS_COMPRESSIONEnables over-the-wire message compression for SMB 3.1.1 mounts when negotiated with the server. Only write requests with data size PAGE_SIZE will be compressed to avoid wasting resources.且 fs/smb/client 目录下已有 compress.c / compress.h 实现文件。可以推断SMB3.1.1 线上的 LZ77 等压缩能力在 6.7 之后已以Experimental形式落地需要内核配置开启并配合服务器端协商。5. T10 copy offloadODX等服务器端拷贝机制TODO 原文指出目前服务器端拷贝只支持两种——copy chunk拷块与 Duplicate Extents ioctl。对照源码完全吻合cifs_ioctl.h 定义了CIFS_IOC_COPYCHUNK_FILEioctl.c 处理该 ioctlsmb2ops.c 中出现了FSCTL_DUPLICATE_EXTENTS_TO_FILE处理分支。也就是说依赖服务器端 ODXOffloaded Data Transfer的 T10 拷贝、以及块级硬件 offload 仍属于未实现范畴有待作为后续增强项。二、稀疏文件、复合请求与句柄关闭优化原文 b、e 项这两项 TODO 共同指向减少与服务器的往返roundtrip这一核心性能命题。稀疏文件TODO 希望更好的复合compounding与错误处理并考虑新增 SMB3.1.1 可选 fsctl使 collapse range折叠区间与 insert range插入区间更原子化compounding 应用面扩充文档指出 open/query/close、open/setinfo/close 等场景已被识别为可优化点而 stat、statfs、create、unlink、mkdir、xattr 等路径已经通过 compounding 获得了改善但还能做更多deferred close延迟关闭 句柄缓存租约通过持有缓存租约并善用文件句柄的引用计数可显著减少重复打开。这部分是典型的渐进式优化清单——读者如果希望为 cifs.ko 做性能贡献此处是最容易观察收益的入口。三、新传输承载SMB3.1.1 over QUIC / SCTP原文 c 项TODO 原文希望支持基于 QUIC乃至 SCTP 等其它基于 socket 的协议承载 SMB3.1.1。对照当前仓库的传输层实现smbdirect.c 负责 RDMA/SMB Directtransport.c 负责传统 TCP 传输未见 QUIC 承载相关代码。此项目前仍未在主线落地属于前瞻性规划。四、配额quota与 UID 映射原文 d、j 项配额支持dTODO 解释其阻碍不在协议本身而在内核 VFS——配额调用quota calls目前无法送达网络文件系统或无设备文件系统需要一次较小的内核改动。因此这是一个跨 VFS 层的协同任务。UID 映射设施jTODO 希望在每次挂载mount或每台服务器per server粒度上把服务器 UID 映射到客户端 UID找不到映射时映射为 nobody并期望与 winbind 更好地集成以解析 SID 属主。目前 cifsacl.c / cifsacl.h 提供的是 ACL/SID 相关的解析能力尚不等同于上述完整的按挂载 UID 映射框架。五、inotify 与目录变更通知原文 f 项TODO 指出 inotify 支持由 Asser 部分完成目标是让 KDE/GNOME 的文件列表窗口能在服务器端文件变化时自动刷新但需要内核 VFS 的小改动来支持移除某文件上的 D_NOTIFY。对照当前源码变更通知的基础设施已以 ioctl 形式存在用户态可通过 CIFS_IOC_NOTIFY 与 CIFS_IOC_NOTIFY_INFO 触发 SMB 变更通知对应实现为 smb2ops.c 中的smb3_notify()及 ioctl.c 的分发处理。换句话说获取服务器变更通知的底层通路已有距离桌面环境目录自动刷新还差 VFS 侧的 inotify 对接工作。六、xattr 的 security/trusted 类别与 SELinux 支持原文 h 项TODO 想实现 security 与 trusted 两个命名空间类别的扩展属性xattr以更好地支持 SELinux。对照 fs/smb/client/Kconfig 中CIFS_XATTR的说明CIFS 会把user命名空间开头的 xattr 映射为 SMB/CIFS 的 EA扩展属性而system 命名空间部分文件系统用它存放 ACL当前不被支持。xattr 的落地逻辑集中在 xattr.c。可见文档所述的 security/trusted 类别仍未完整打通是涉及轻量协议扩展的工作项。七、SMB3.1.1 tree connect contexts原文 i 项这是 SMB3.1.1 新增的协议特性见 MS-SMB2 规范TODO 认为其对虚拟化场景尤其有价值。当前仓库中未发现 tree connect contexts 的协商/处理实现属于未实现项等待愿意实现新协议上下文的贡献者。八、加密文件原文 l 项与基于声明的 ACL原文 n 项加密文件lTODO 说明当前只能读取到服务器上该文件被加密的属性但不能修改该属性。换言之get侧可用、set侧未通声明式 ACLclaims based ACLsDACn这是 Windows 较新的基于用户/资源声明claims的授权模型TODO 中列为待支持项当前客户端仍未实现。九、witness 协议的扩展原文 p 项witness服务见证协议用于高可用服务器对资源状态变化的通知。TODO 指出Linux 客户端目前仅支持 witness 对服务器迁移server move的通知还希望扩展出共享移动share move与服务器网卡变化network adapter change的通知。仓库中已有完整的 witness 客户端骨架cifs_swn.c / cifs_swn.h并在 fs/smb/client/Kconfig 提供CIFS_SWN_UPCALL开关依赖用户态守护进程建立 DCE/RPC 连接以获取集群可用接口与资源变更通知。因此这是一个框架在、通知类型待扩充的项目。十、mount 报错信息与用户态工具族原文 g、k、m、o、q 项这一组 TODO 全部围绕让普通用户与管理员更容易配置和使用 cifs.komount.cifs 更详细的报错qTODO 指出得益于新 mount API 的实现这项工作现在更容易了。当前仓库 fs_context.c 正是新 mount API 的落地实现说明前提条件已具备剩下的是在参数校验失败、dialect 协商失败时输出更友好的诊断配置/统计 GUI 工具g文档提到已开始的用于配置/proc/fs/cifs设置与展示 CIFS 统计的 GUI 工具利用 SMB3 专用 ioctl/fsctl 的用户态工具kTODO 特别指出 cifs.ko 已支持passthrough ioctl/fsctl——即用户态可直接发送各类 SMB3 fsctl、query info、set info 调用。cifs_ioctl.h 与 ioctl.c 中可看到这些接口的足迹TODO 希望有更多工具基于此扩展非 POSIX 元数据设置例如扩充 smb-info 工具的做法改进统计采集工具m围绕/proc/fs/cifs/Stats扩展甚至考虑与 nfsometer 集成挂载辅助 GUIo用于简化 mount 时繁多的配置选项。关于/proc/fs/cifs当前实现位于 cifs_debug.c 的cifs_proc_init()它在挂载时创建fs/cifs目录及多个只读/可写 proc 项包括Stats、cifsFYI、traceSMB、SecurityFlags、LookupCacheEnabled、mount_params、open_dirs等——这正是上述 GUI/统计工具所围绕的数据面与配置面。十一、改进追踪与可观测性原文 y 项TODO 希望更完善的追踪、更多 eBPF tracepoint、更好的性能分析脚本。对照源码可观测性基础设施已经相当可观trace.h 中定义了大量DEFINE_EVENT事件模板族读写错误、copy range、EOF、fd 类事件等配合 trace.c 与 proc 下的traceSMB开关使用。因此该 TODO 的剩余空间在于更多采样点与更方便的分析脚本而不是从零搭建。十二、模块拆分与遗留 CIFS 方言的去留原文 t 项TODO 建议把 cifs 与 smb3 支持拆成独立模块使不需要的环境可以关掉老旧且欠安全的 CIFSSMB1方言同时简化代码。当前仓库中这仍是单一模块架构fs/smb/client/Kconfig 只有一个CIFS主选项SMB3 and CIFS support并依靠CIFS_ALLOW_INSECURE_LEGACY默认 y来决定是否允许vers1.0/vers2.0挂载。也就是说安全策略上已经可以通过内核配置禁止旧方言但物理上拆成两个内核模块的目标尚未实现。相关工程细节可见 Makefile 与源码中的smb1*.c如 smb1ops.c、smb1transport.c、smb1maperror.c等按 SMB1 独立组织的文件布局。十三、SMB3.1.1 POSIX 扩展、Apple/Mac 扩展与更多认证选项原文 v、w、x 项SMB3.1.1 POSIX Extensions 的更多测试v注意 fs/smb/client/Kconfig 中的CIFS_POSIX仅面向更老的 cifs 方言与 Samba注释明确写道 This config option is not needed when mounting with SMB3.1.1——说明新版 POSIX 扩展走的是 SMB3.1.1 内建协商路径TODO 侧重点是把测试覆盖面做扎实Mac SMB3.1.1 扩展w用于改善与 Apple 服务器如 macOS 文件共享的互操作当前未实现更多认证选项x如 IAKERB、peer-to-peer Kerberos、SCRAM 等现有服务器已支持的机制当前客户端仍以 Kerberos/SPNEGO 与 NTLMv2 为主见 Kconfig 中CIFS_UPCALL的 SPNEGO 说明上述扩展选项仍未加入。十四、已知缺陷与回归风险清单Known Bugstodo.rst 明确指出缺陷跟踪与质量看板集中在以下位置均为文档给出的官方渠道供读者自行检索Samba Bugzilla以 CifsVFS 为产品名搜索kernel bugzillaProduct File System、Component CIFSSamba wiki 的 xfstest-results-smb3 页面用于对照不同服务器上 xfstests 的通过情况注意 changes.rst 提示按内核版本整理的修复/改进摘要可参见 LinuxCIFS 内核 wiki 的 by kernel version 列表比逐条解析git log fs/smb/client更省力。十五、建议开展的系统性测试Misc testing to do文档列出的测试大纲几乎都可直接转化为贡献者的验收标准路径名极限测试对各种服务器类型测量最大路径名长度与最大路径名组件数尝试 8 层嵌套符号链接并把最大路径名通过stat -f返回给用户态xfstests 增强改善 xfstest 对 cifs/smb3 的启用以适配协议差异提高测试覆盖性能基准与调优用 iozone 等工具持续测压TODO 给出两个具体优化点——并行化顺序写在关闭签名时向现代服务器请求/发送比协商值更大的读写块少见服务器的互操作测试更充分地对小众/老式服务器做回归扩展 smb3 buildbot该自动化系统当前已对 Windows、Samba 与 Azure 做自动 xfstestingTODO 希望补充更多用例并提升执行速度详见文档内给出的 buildbot 入口静态分析告警清零处理各类 coverity 告警——文档指出它们大多不是真缺陷但清得越干净越容易让静态分析器在未来暴露真正的问题。十六、文档与后续维护原文 r、s 项TODO 还包含两条元工作持续更新 CIFS/SMB 内核客户端文档与用户指南与 Documentation/admin-guide/cifs 目录下的 introduction.rst、usage.rst、changes.rst、authors.rst 直接对应以及用更广泛的 xfstests 补齐 fs/smb 的回归测试。对于想参与内核开发的读者这两项同样是非常低门槛、高可见度的贡献入口。结语如何把这份 TODO 变成可验证的代码工作todo.rst 本身是一份贡献邀请书它明确表示欢迎贡献本模块存在大量可见且重要的改进机会。结合本文的源码对照可以得出几条实用的行动路线先从源码确认现状每个 TODO 落地前先看 fs/smb/client 下的对应文件——例如压缩能力查 Kconfig 与 compress.c签名能力查 smb2pdu.c 中的TBD注释变更通知查 ioctl.c 与 smb2ops.c用真实环境验收todo.rst 本身建议对 Windows、Samba、Azure 等多元服务器组合执行 xfstests从小项做起报错信息可读性q、统计工具m、文档更新r、测试补全s、v都属入门友好项而 GMAC 签名a、QUIC 承载c、声明式 ACLn等则属于需要协议深度的工作。这份文档的价值并不在于批判模块缺了什么而在于精确界定了 Linux 内核最主流 SMB 客户端的能力边界与演进方向——它既是新贡献者的任务清单也是评估挂载方案、排查兼容性问题时哪些不能做、为什么不能做的最权威参照。【免费下载链接】linuxLinux kernel source tree项目地址: https://gitcode.com/GitHub_Trending/li/linux创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/9/8 20:54:48
PyTorch 深度学习入门教程:3步从零训练并部署一个食物图像识别模型
2026/9/8 20:54:48
res-downloader:视频资源嗅探下载指南
2026/9/8 20:54:48
Hello 算法搜索专题小结:四类搜索算法的选型对比与哈希优化实战
2026/9/8 22:50:15
用Prompt做代码审查与微重构:一份可复用的AI辅助审查模板
2026/9/8 22:50:15
Storybook 故事变体复用与背景参数覆盖:从 CSF 2 的 `bind({})` 到 CSF 3 的对象展开
2026/9/8 22:50:15
Rufus 启动盘制作:配对分区方案,从空白U盘到直接开机
2026/9/8 22:50:15
PR-Agent实战:AI代码审查如何解放你的PR处理流程
2026/9/8 22:50:15
微信小程序背单词工具开发复盘:从选型到上线的完整踩坑指南
2026/9/8 22:45:14
无sudo权限下在Ubuntu上运行RIOT网络性能测试实战
2026/9/8 0:02:01
中国车企再破谣言,GAC吉利零跑获欧盟安全五星
2026/9/8 0:02:01
Compose Hot Reload新增MCP服务器助AI智能体调试
2026/9/8 0:02:01
你熟悉的GoPro正在悄然改变
2026/9/8 0:43:11
超人会飞不算本事:系统稳定依赖清晰规则与边界设计
2026/9/8 1:13:27
超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论
2026/9/8 2:18:22
基于CNN的调制信号识别:MATLAB实现时频图分类实战