待办事项

截至 6.7 内核。请参见 https://wiki.samba.org/index.php/LinuxCIFSKernel 获取按版本添加的功能列表

部分缺失功能列表

欢迎贡献。有许多机会为该模块做出可见且重要的贡献。以下是已知问题和缺失功能的部分列表

  1. SMB3(和 SMB3.1.1)缺失可选功能:多通道性能优化、算法通道选择、目录租约优化、支持更快的报文签名 (GMAC)、支持网络压缩、T10 复制卸载即“ODX”(目前仅支持复制块和“重复扩展”ioctl 这两种服务器端复制机制)

  2. 更好的稀疏文件支持复合操作和错误处理优化,可能需要添加新的可选 SMB3.1.1 fsctl 以使折叠范围和插入范围更具原子性

  3. 支持基于 QUIC(以及其他基于套接字的协议如 SCTP)的 SMB3.1.1

  4. 配额支持(需要对内核进行少量修改,否则配额调用无法到达网络文件系统或无设备文件系统)。

  5. 可以优化其他用例以使用“复合操作”(例如 open/query/close 和 open/setinfo/close),以减少到服务器的往返次数并提高性能。各种情况(stat、statfs、create、unlink、mkdir、xattrs)已通过使用复合操作得到改进,但还有更多工作要做。此外,我们可以通过使用延迟关闭(带有句柄缓存租约)和更好地使用文件句柄上的引用计数器来显著减少冗余的打开操作。

  6. 完成 inotify 支持,以便 KDE 和 Gnome 文件列表窗口能够自动刷新(Asser 已部分完成)。需要对内核 VFS 进行少量修改以支持移除文件上的 D_NOTIFY。

  7. 添加 GUI 工具以配置 /proc/fs/cifs 设置并显示 CIFS 统计信息(已启动)

  8. 实现对 xattrs 的安全和可信类别支持(需要少量协议扩展),以更好地支持 SELinux

  9. 添加对树连接上下文的支持(参见 MS-SMB2),这是一个新的 SMB3.1.1 协议功能(可能对虚拟化特别有用)。

  10. 创建 UID 映射功能,以便服务器 UID 可以按挂载点或按服务器映射到客户端 UID,如果不存在映射则映射到 nobody。同时更好地与 winbind 集成以解析 SID 所有者

  11. 添加工具以利用更多 SMB3 特定 ioctl 和功能(cifs.ko 中现已实现直通 ioctl/fsctl,允许直接从用户空间发送各种 SMB3 fsctl 以及查询信息和设置信息调用)。添加工具以便更轻松地从工具设置各种非 POSIX 元数据属性(例如,扩展 smb-info 工具中已完成的工作)。

  12. 加密文件支持(目前报告文件在服务器上已加密的属性,但不支持更改该属性)。

  13. 改进的统计信息收集工具(或许与 nfsometer 集成?),以扩展和简化目前在 /proc/fs/cifs/Stats 中的内容的使用

  14. 添加对基于声明的 ACL (“DAC”) 的支持

  15. 挂载助手 GUI(简化挂载时的各种配置选项)

  16. 扩展对 witness 协议的支持,以允许共享移动和服务器网卡更改的通知。目前 Linux 客户端仅支持 witness 协议的服务器移动通知。

  17. 允许 mount.cifs 在报告方言或不支持的功能错误时提供更详细的信息。由于新的挂载 API 的实现,现在这将更容易实现。

  18. 更新 CIFS 文档和用户指南。

  19. 解决在标准文件系统 xfstests 套件中运行更广泛的 xfstests 发现的错误。

  20. 将 CIFS 和 SMB3 支持拆分为单独的模块,以便在不需要的环境中禁用旧版(和安全性较低的)CIFS 方言,并简化代码。

  1. 对 SMB3.1.1 的 POSIX 扩展进行额外测试

  2. 支持 Mac SMB3.1.1 扩展以改善与 Apple 服务器的互操作性

  3. 支持额外的认证选项(例如 IAKERB、点对点 Kerberos、SCRAM 以及现有服务器支持的其他选项)

  4. 改进的跟踪、更多的 eBPF 跟踪点、更好的性能分析脚本

已知错误

请参见 https://bugzilla.samba.org - 搜索产品“CifsVFS”以获取当前错误列表。另请查看 http://bugzilla.kernel.org (产品 = File System, 组件 = CIFS) 和 xfstest 结果,例如 https://wiki.samba.org/index.php/Xfstest-results-smb3

杂项测试待办事项

  1. 检查针对各种服务器类型的最大路径名和最大路径名组件。尝试嵌套符号链接(8 层深)。在 stat -f 信息中返回最大路径名

  2. 改进 xfstest 的 CIFS/SMB3 启用,并根据需要调整 xfstest 以更好地测试 CIFS/SMB3

  3. 使用 iozone 及类似工具进行额外的性能测试和优化——有一些简单的更改可以并行化顺序写入,并在禁用签名时请求更大的读取大小(大于协商大小)并向现代服务器发送更大的写入大小。

  4. 针对不常见服务器进行更彻底的测试

  5. 继续扩展 SMB3“buildbot”,该机器人目前对 Windows、Samba 和 Azure 进行自动化 xfstesting——以添加更多测试并允许 buildbot 更快地执行测试。buildbot 的 URL 是:http://smb3-test-rhel-75.southcentralus.cloudapp.azure.com

  6. 解决各种 Coverity 警告(大多数本身并非错误,但解决的警告越多,就越容易发现静态分析器未来会指出的真正问题)。