Linux 7.0 功能合并窗口已于上周末结束,而下一个内核版本要到 4 月才会发布为稳定版本。但已经有几项功能已经被定位为可能合并到 Linux 7.1 内核中,前提是没有出现问题或 Linus Torvalds 提出反对。其中一项已经有望提交给 Linux 7.1 的功能是支持套接字的扩展属性。
Christian Brauner 一直在工作于套接字扩展属性的支持。他上周在重新设计 simple xattrs 和支持套接字上的 user.* xattrs 方面解释道:
“随着这一基础设施的建立,该系列增加了对套接字上 user.* xattrs 的支持。基于路径的 AF_UNIX 套接字会从底层文件系统(例如 tmpfs)继承 xattr 支持,但在 sockfs 中的套接字——也就是说通过 socket() 创建的所有内容,包括抽象命名空间 AF_UNIX 套接字——都没有 xattr 支持。”
支持套接字上的 user.*扩展属性是为了满足 GNOME 和 systemd 的使用场景。
Brauner 在补丁系列的封面信中补充道:
实际的动机来自几个方面。systemd 和 GNOME 正在扩展它们对 Varlink 作为 IPC 机制的使用。对于 D-Bus,有像 dbus-monitor 这样的工具可以观察系统范围内的 IPC 流量,但这只因为 D-Bus 有一个中央代理。对于 Varlink,没有代理,目前没有办法识别哪些套接字使用 Varlink。通过在套接字上设置 user.* xattrs,一个服务可以将其套接字标记为它所使用的 IPC 协议(例如,user.varlink=1),然后一个 eBPF 程序可以选择性地捕获这些套接字的流量。通过 netlink 列出已绑定的套接字,结合这些 xattr 标签,提供了一种发现所有 Varlink IPC 入口点的方法,用于调试和内省。
类似地,systemd-journald 希望在 /dev/log 套接字上使用 xattrs 进行协议协商,以指示是否支持 RFC 5424 结构化 syslog,还是应该仅使用传统的 RFC 3164 格式。
在容器中,这些标签特别有用,因为高权限或更复杂的套接字识别解决方案不可用。
这些补丁已经被放入 VFS.git 的 vfs-7.1.xattr Git 分支中。补丁现在已经就位,一旦四月份的 Linux 7.1 合并窗口开启,它们很可能就会被提交。
Linuxeden开源社区