皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

Linux 6.17 推出新的 file_getattr 和 file_setattr 系统调用

Linux 6.17 推出新的 file_getattr 和 file_setattr 系统调用

除了更好地处理多设备文件系统(例如 Btrfs 的本机 RAID 功能)以及现在允许更有效地将零写入现代存储设备之外,Linux 6.17 的 VFS 拉取请求数量还增加了一些其他额外的好处。

Linux 6.17 的一些新系统调用引入了 file_getattr() 和 file_setattr() 作为 FS_IOC_FSGETXATTR 和 FS_IOC_FSSETXATTR 的更具可扩展性的替代方案。拉取请求解释了file_getattr和file_setattr系统调用:

“经过长时间的讨论,这引入了新的 file_getattr() 和 file_setattr() 系统调用。这两个系统调用都是 FS_IOC_FSGETXATTR 和 FS_IOC_FSSETXATTR 系统调用的后续和可扩展的伴侣,这些调用除了以一种易于将它们与扩展属性相关作混淆的方式命名外,还开始显示它们的年龄。

这些系统调用允许用户空间在特殊文件上设置文件系统 inode 属性。其中一个使用示例是 XFS 配额项目。

XFS 具有可以附加到目录的项目配额。这些目录中的所有新索引节点都继承父目录上设置的项目 ID。

通过在每个 inode 上打开和调用 FS_IOC_FSSETXATTR,从用户空间创建项目。对于 FIFO、SOCK、BLK 等特殊文件,这是不可能的。因此,一些 inode 留下空的项目 ID。然后,这些 inode 不会显示在配额记帐中,但仍存在于目录中。这并不重要,但是在具有现有项目配额的目录中创建特殊文件的情况下,这些新索引节点将继承扩展属性。这将创建具有属性和不具有属性的特殊文件的混合。此外,具有属性的特殊文件不可能变得清晰或更改属性。这反过来又阻止了用户空间在这些现有文件上重新创建配额项目。

此外,这些新的系统调用允许实现我们无法或不想再适应旧 ioctl 的其他属性。

下一个 Linux 内核版本的另一个值得注意的 VFS 添加是 FS_IOC_GETLBMD_CAP ioctl。这个新的 ioctl 允许在块设备上查询元数据和保护功能。那里的拉取请求解释了FS_IOC_GETLBMD_CAP:

“这增加了新的FS_IOC_GETLBMD_CAP ioctl() 来查询元数据和保护信息 (PI) 功能。此 ioctl 返回有关文件完整性配置文件的信息。这对于用户空间应用程序了解文件端到端数据保护支持并相应地配置 I/O 非常有用。

目前,该接口仅受块设备支持。但是,在通用 FS ioctl 空间中设计和放置此 ioctl 允许我们将其扩展到文件上工作。当文件系统开始支持 PI 感知布局时,这可能很有用。

该技术描述的中文翻译如下:

与此同时,VFS iomap 更新为 FUSE 添加了对缓冲写入(buffered writes)和脏页簇回写(dirty folio writeback)的 iomap 支持。此项工作旨在为使用大页簇(large folios)的 FUSE 文件系统启用最新状态(up-to-date)和脏页追踪(dirty tracking)功能。
现在,无需将整个页簇(folio)读入页缓存(page cache),只需读取相关部分;并且页簇回写时也仅需回写脏页部分,而无需回写整个页簇、

VFS 拉取于周一合并到 Git for Linux 6.17。

转自 Linux 6.17 Lands New file_getattr & file_setattr System Calls – Phoronix