IOCTL_IFLAGS
Section: Linux Programmer's Manual (2)
Updated: 2019-11-19
Page Index
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 associated 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 restriction 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 provides 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 contents or metadata
(permissions, timestamps, ownership, link count and so on).
(This restriction applies even to the superuser.)
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)
filesystems.
On a filesystem that is journaling in
ordered
or
writeback
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 accessed.
This can provide I/O performance benefits for applications that do not care
about the accuracy of this timestamp.
This flag provides functionality similar to the
mount(2)
MS_NOATIME
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 Reiserfs 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 inherit 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 implemented 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-allocation
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 directory.
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_SETFLAGS
operations is
int *,
notwithstanding the implication in the kernel 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.10 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/.