Linux 是否有系统调用来访问它支持的文件系统的所有功能?

use*_*642 12 linux filesystems

Linux 支持多种文件系统(例如:ext3、NTFS、FAT32 等)。

下图显示了 Linux 如何允许进程访问文件:

在此处输入图片说明

所以假设有一个进程调用了read()系统调用来读取一个文件,会发生什么就是访问VFS层,VFS层会根据文件所在分区的文件系统来决定访问哪个文件系统驱动被阅读驻留。

Linux提供了许多系统调用来访问文件(例如:read()write()rename()等)。

现在,read()write()rename()所有的文件系统Linux支持工作。

但是有一些特定功能仅存在于某些文件系统上,而在其他文件系统上不存在。例如:在 NTFS 文件系统上,您可以为文件设置存档位,而在 ext3 文件系统上则不能这样做。

现在我的问题是,Linux 是否有系统调用来访问它支持的文件系统的所有功能?例如:Linux 是否有系统调用来为 NTFS 文件系统上的文件设置存档位?

ilk*_*chu 10

Linux 是否有系统调用来为 NTFS 文件系统上的文件设置存档位?

对于这种特殊情况,ntfs-3g驱动程序通过扩展属性导出文件属性,请参阅我可以在 Linux 上的 NTFS 上的文件上设置“存档”位吗?

(V)FAT 文件系统具有类似的文件属性,但它使用一个ioctl()函数来访问它们,参见ioctl_fat(2)。(ioctl()是一种多用途系统调用,用于各种不保证真正系统调用的设备特定的东西。)

现在我的问题是,Linux 是否有系统调用来访问它支持的文件系统的所有功能?

这是很难回答是肯定的,但一直相反的至少一个例子。ext4 内部支持文件的“出生时间”时间戳(例如,真实的创建时间,与ctimeinode 修改的更改不同)。但即使 ext4 是“标准”文件系统,在很长一段时间内,都没有系统调用来访问诞生时间。

现在应该支持它,在 2017 年 4 月在Linux 4.11 中添加了statx()系统调用

有关的:

  • ntfs != 脂肪。至少 ntfs 的内核版本没有任何方法来设置或获取存档标志,尽管它的头文件定义了它。只有基于保险丝的 ntfs-3g 似乎支持它(通过扩展属性,而不是特殊的 ioctls)。 (3认同)