Common Linux features
=====================

The Linux operating system implements a POSIX standard interfaces and API with
additional interfaces. Many of them have become common in other filesystems. The
ones listed below have been added relatively recently and are considered
interesting for users:

birth/origin inode time
        a timestamp associated with an inode of when it was created, cannot be
        changed and requires the *statx* syscall to be read

statx
        an extended version of the *stat* syscall that provides extensible
        interface to read more information that are not available in original
        *stat*

fallocate modes
        the *fallocate* syscall allows to manipulate file extents

        Supported modes:

        - keep size (FALLOC_FL_KEEP_SIZE)
        - hole punching (FALLOC_FL_PUNCH_HOLE)
        - zero range (FALLOC_FL_ZERO_RANGE)

FIEMAP
        an ioctl that enumerates file extents, related tool is :command:`filefrag`

filesystem label
        another filesystem identification, could be used for mount or for better
        recognition, can be set or read by an ioctl or by command
        :ref:`btrfs filesystem label<man-filesystem-label>`

O_TMPFILE
        mode of open() syscall that creates a file with no associated directory
        entry, which makes it impossible to be seen by other processes and is
        thus safe to be used as a temporary file
        (https://lwn.net/Articles/619146/)

xattr, acl
        extended attributes (xattr) is a list of *key=value* pairs associated
        with a file, usually storing additional metadata related to security,
        access control list in particular (ACL) or properties (:doc:`btrfs-property`)

cross-rename
        mode of *renameat2* syscall that can atomically swap 2 directory
        entries (files/directories/subvolumes/symlinks) within the same filesystem


File attributes, XFLAGS
-----------------------

.. include:: ch-file-attributes.rst
