IOCTL_IFLAGS(2) Linux Programmer's Manual IOCTL_IFLAGS(2)
NAME
ioctl_iflags - ioctl() operations for inode flags
DESCRIPTION
Various Linux filesystems support the notion of inode flags--attributes
that modify the semantics of files and directories. These flags can be
retrieved and modified using two ioctl(2) operations:
int attr;
fd = open("pathname", ...);
ioctl(fd, FS_IOC_GETFLAGS, &attr); /* Place current flags
in 'attr' */
attr |= FS_NOATIME_FL; /* Tweak returned bit mask */
ioctl(fd, FS_IOC_SETFLAGS, &attr); /* Update flags for inode
referred to by 'fd' */
The lsattr(1) and chattr(1) shell commands provide interfaces to these
two operations, allowing a user to view and modify the inode flags as-
sociated with a file.
The following flags are supported (shown along with the corresponding
letter used to indicate the flag by lsattr(1) and chattr(1)):
FS_APPEND_FL 'a'
The file can be opened only with the O_APPEND flag. (This re-
striction applies even to the superuser.) Only a privileged
process (CAP_LINUX_IMMUTABLE) can set or clear this attribute.
FS_COMPR_FL 'c'
Store the file in a compressed format on disk. This flag is not
supported by most of the mainstream filesystem implementations;
one exception is btrfs(5).
FS_DIRSYNC_FL 'D' (since Linux 2.6.0)
Write directory changes synchronously to disk. This flag pro-
vides semantics equivalent to the mount(2) MS_DIRSYNC option,
but on a per-directory basis. This flag can be applied only to
directories.
FS_IMMUTABLE_FL 'i'
The file is immutable: no changes are permitted to the file con-
tents or metadata (permissions, timestamps, ownership, link
count and so on). (This restriction applies even to the supe-
ruser.) Only a privileged process (CAP_LINUX_IMMUTABLE) can set
or clear this attribute.
FS_JOURNAL_DATA_FL 'j'
Enable journaling of file data on ext3(5) and ext4(5) filesys-
tems. On a filesystem that is journaling in ordered or write-
back mode, a privileged (CAP_SYS_RESOURCE) process can set this
flag to enable journaling of data updates on a per-file basis.
FS_NOATIME_FL 'A'
Don't update the file last access time when the file is ac-
cessed. This can provide I/O performance benefits for applica-
tions that do not care about the accuracy of this timestamp.
This flag provides functionality similar to the mount(2) MS_NOA-
TIME flag, but on a per-file basis.
FS_NOCOW_FL 'C' (since Linux 2.6.39)
The file will not be subject to copy-on-write updates. This
flag has an effect only on filesystems that support copy-on-
write semantics, such as Btrfs. See chattr(1) and btrfs(5).
FS_NODUMP_FL 'd'
Don't include this file in backups made using dump(8).
FS_NOTAIL_FL 't'
This flag is supported only on Reiserfs. It disables the Reis-
erfs tail-packing feature, which tries to pack small files (and
the final fragment of larger files) into the same disk block as
the file metadata.
FS_PROJINHERIT_FL 'P' (since Linux 4.5)
Inherit the quota project ID. Files and subdirectories will in-
herit the project ID of the directory. This flag can be applied
only to directories.
FS_SECRM_FL 's'
Mark the file for secure deletion. This feature is not imple-
mented by any filesystem, since the task of securely erasing a
file from a recording medium is surprisingly difficult.
FS_SYNC_FL 'S'
Make file updates synchronous. For files, this makes all writes
synchronous (as though all opens of the file were with the
O_SYNC flag). For directories, this has the same effect as the
FS_DIRSYNC_FL flag.
FS_TOPDIR_FL 'T'
Mark a directory for special treatment under the Orlov block-al-
location strategy. See chattr(1) for details. This flag can be
applied only to directories and has an effect only for ext2,
ext3, and ext4.
FS_UNRM_FL 'u'
Allow the file to be undeleted if it is deleted. This feature
is not implemented by any filesystem, since it is possible to
implement file-recovery mechanisms outside the kernel.
In most cases, when any of the above flags is set on a directory, the
flag is inherited by files and subdirectories created inside that di-
rectory. Exceptions include FS_TOPDIR_FL, which is not inheritable,
and FS_DIRSYNC_FL, which is inherited only by subdirectories.
CONFORMING TO
Inode flags are a nonstandard Linux extension.
NOTES
In order to change the inode flags of a file using the FS_IOC_SETFLAGS
operation, the effective user ID of the caller must match the owner of
the file, or the caller must have the CAP_FOWNER capability.
The type of the argument given to the FS_IOC_GETFLAGS and FS_IOC_SET-
FLAGS operations is int *, notwithstanding the implication in the ker-
nel source file include/uapi/linux/fs.h that the argument is long *.
SEE ALSO
chattr(1), lsattr(1), mount(2), btrfs(5), ext4(5), xfs(5), xattr(7),
mount(8)
COLOPHON
This page is part of release 5.07 of the Linux man-pages project. A
description of the project, information about reporting bugs, and the
latest version of this page, can be found at
https://www.kernel.org/doc/man-pages/.
Linux 2019-11-19 IOCTL_IFLAGS(2)