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