IOCTL_IFLAGS - Linux手册页

时间:2019-08-20 17:58:54  来源:igfitidea点击:

Linux程序员手册 第2部分
更新日期: 2019-11-19

名称

ioctl_iflags-索引节点标志的ioctl()操作

说明

各种Linux文件系统都支持inode标志的概念-修改文件和目录语义的属性。可以使用两个ioctl(2)操作来检索和修改这些标志:

int attr;
fd = open("pathname", ...);

ioctl(fd, FS_IOC_GETFLAGS, &attr);  /* Place current flags
                                       in aqattraq */
attr |= FS_NOATIME_FL;              /* Tweak returned bit mask */
ioctl(fd, FS_IOC_SETFLAGS, &attr);  /* Update flags for inode
                                       referred to by aqfdaq */

lsattr(1)和chattr(1)Shell命令提供了这两个操作的接口,从而允许用户查看和修改与文件关联的inode标志。

支持以下标志(与用于通过lsattr(1)和chattr(1)指示标志的相应字母一起显示):

FS_APPEND_FLaqaaq
只能使用O_APPEND标志打开文件。 (此限制甚至适用于超级用户。)只有特权进程(CAP_LINUX_IMMUTABLE)可以设置或清除此属性。
FS_COMPR_FLaqcaq
将文件以压缩格式存储在磁盘上。大多数主流文件系统实现均不支持此标志。 btrfs(5)是一个例外。
FS_DIRSYNC_FLaqDaq (since Linux 2.6.0)
将目录更改同步到磁盘。该标志提供的语义与mount(2)MS_DIRSYNC选项等效,但基于每个目录。此标志只能应用于目录。
FS_IMMUTABLE_FLaqiaq
该文件是不可变的:不允许更改文件内容或元数据(权限,时间戳,所有权,链接数等)。 (此限制甚至适用于超级用户。)只有特权进程(CAP_LINUX_IMMUTABLE)可以设置或清除此属性。
FS_JOURNAL_DATA_FLaqjaq
ext3(5)和ext4(5)文件系统上启用文件数据日记功能。在以有序或写回方式记录日志的文件系统上,特权(CAP_SYS_RESOURCE)进程可以设置此标志,以启用每个文件的数据更新记录。
FS_NOATIME_FLaqAaq
访问文件时不要更新文件的上次访问时间。这可以为不关心此时间戳准确性的应用程序提供I / O性能优势。该标志提供的功能类似于mount(2)MS_NOATIME标志,但基于每个文件。
FS_NOCOW_FLaqCaq (since Linux 2.6.39)
该文件将不受写时复制更新的约束。该标志仅对支持写时复制语义的文件系统有效,例如Btrfs。请参见chattr(1)和btrfs(5)。
FS_NODUMP_FLaqdaq
不要在使用dump(8)进行的备份中包含此文件。
FS_NOTAIL_FLaqtaq
仅Reiserfs支持此标志。它禁用Reiserfs尾部打包功能,该功能尝试将小文件(以及大文件的最终片段)打包到与文件元数据相同的磁盘块中。
FS_PROJINHERIT_FLaqPaq (since Linux 4.5)
继承配额项目ID。文件和子目录将继承目录的项目ID。此标志只能应用于目录。
FS_SECRM_FLaqsaq
将文件标记为安全删除。任何文件系统都无法实现此功能,因为从记录介质中安全擦除文件的任务非常困难。
FS_SYNC_FLaqSaq
使文件更新同步。对于文件,这将使所有写入同步(就像文件的所有打开都带有O_SYNC标志一样)。对于目录,其作用与FS_DIRSYNC_FL标志相同。
FS_TOPDIR_FLaqTaq
在Orlov块分配策略下,将目录标记为特殊处理。有关详细信息,请参见chattr(1)。该标志只能应用于目录,并且仅对ext2,ext3和ext4有效。
FS_UNRM_FLaquaq
如果删除了文件,则允许将其删除。任何文件系统均未实现此功能,因为可以在内核外部实现文件恢复机制。

在大多数情况下,在目录上设置任何上述标志时,该标志将被该目录内创建的文件和子目录继承。例外包括不可继承的FS_TOPDIR_FL和仅由子目录继承的FS_DIRSYNC_FL。

遵循规范

索引节点标志是非标准的Linux扩展。

备注

为了使用FS_IOC_SETFLAGS操作更改文件的inode标志,调用者的有效用户ID必须与文件的所有者匹配,或者调用者必须具有CAP_FOWNER功能。

FS_IOC_GETFLAGS和FS_IOC_SETFLAGS操作的参数类型为int *,尽管在内核源文件include / uapi / linux / fs.h中暗示该参数为long *。

另外参见

chattr(1),lsattr(1),mount(2),btrfs(5),ext4(5),xfs(5),xattr(7),mount(8)

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/