Provided by: manpages-dev_6.03-2_all bug


       ioctl_iflags - ioctl() operations for inode flags


       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.

              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.


       Inode flags are a nonstandard Linux extension.


       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 *.


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