diff options
Diffstat (limited to 'man2/statx.2')
-rw-r--r-- | man2/statx.2 | 614 |
1 files changed, 0 insertions, 614 deletions
diff --git a/man2/statx.2 b/man2/statx.2 deleted file mode 100644 index ce79da2..0000000 --- a/man2/statx.2 +++ /dev/null @@ -1,614 +0,0 @@ -'\" t -.\" Copyright (c) 2017 David Howells <dhowells@redhat.com> -.\" -.\" Derived from the stat.2 manual page: -.\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992 -.\" Parts Copyright (c) 1995 Nicolai Langfeldt (janl@ifi.uio.no), 1/1/95 -.\" and Copyright (c) 2006, 2007, 2014 Michael Kerrisk <mtk.manpages@gmail.com> -.\" -.\" SPDX-License-Identifier: Linux-man-pages-copyleft -.\" -.TH statx 2 2023-10-31 "Linux man-pages 6.7" -.SH NAME -statx \- get file status (extended) -.SH LIBRARY -Standard C library -.RI ( libc ", " \-lc ) -.SH SYNOPSIS -.nf -.BR "#define _GNU_SOURCE " "/* See feature_test_macros(7) */" -.BR "#include <fcntl.h> " "/* Definition of " AT_* " constants */" -.B #include <sys/stat.h> -.P -.BI "int statx(int " dirfd ", const char *restrict " pathname ", int " flags , -.BI " unsigned int " mask ", struct statx *restrict " statxbuf ); -.fi -.SH DESCRIPTION -This function returns information about a file, storing it in the buffer -pointed to by -.IR statxbuf . -The returned buffer is a structure of the following type: -.P -.in +4n -.EX -struct statx { - __u32 stx_mask; /* Mask of bits indicating - filled fields */ - __u32 stx_blksize; /* Block size for filesystem I/O */ - __u64 stx_attributes; /* Extra file attribute indicators */ - __u32 stx_nlink; /* Number of hard links */ - __u32 stx_uid; /* User ID of owner */ - __u32 stx_gid; /* Group ID of owner */ - __u16 stx_mode; /* File type and mode */ - __u64 stx_ino; /* Inode number */ - __u64 stx_size; /* Total size in bytes */ - __u64 stx_blocks; /* Number of 512B blocks allocated */ - __u64 stx_attributes_mask; - /* Mask to show what\[aq]s supported - in stx_attributes */ -\& - /* The following fields are file timestamps */ - struct statx_timestamp stx_atime; /* Last access */ - struct statx_timestamp stx_btime; /* Creation */ - struct statx_timestamp stx_ctime; /* Last status change */ - struct statx_timestamp stx_mtime; /* Last modification */ -\& - /* If this file represents a device, then the next two - fields contain the ID of the device */ - __u32 stx_rdev_major; /* Major ID */ - __u32 stx_rdev_minor; /* Minor ID */ -\& - /* The next two fields contain the ID of the device - containing the filesystem where the file resides */ - __u32 stx_dev_major; /* Major ID */ - __u32 stx_dev_minor; /* Minor ID */ -\& - __u64 stx_mnt_id; /* Mount ID */ -\& - /* Direct I/O alignment restrictions */ - __u32 stx_dio_mem_align; - __u32 stx_dio_offset_align; -}; -.EE -.in -.P -The file timestamps are structures of the following type: -.P -.in +4n -.EX -struct statx_timestamp { - __s64 tv_sec; /* Seconds since the Epoch (UNIX time) */ - __u32 tv_nsec; /* Nanoseconds since tv_sec */ -}; -.EE -.in -.P -(Note that reserved space and padding is omitted.) -.SS -Invoking \fBstatx\fR(): -To access a file's status, no permissions are required on the file itself, -but in the case of -.BR statx () -with a pathname, -execute (search) permission is required on all of the directories in -.I pathname -that lead to the file. -.P -.BR statx () -uses -.IR pathname , -.IR dirfd , -and -.I flags -to identify the target file in one of the following ways: -.TP -An absolute pathname -If -.I pathname -begins with a slash, -then it is an absolute pathname that identifies the target file. -In this case, -.I dirfd -is ignored. -.TP -A relative pathname -If -.I pathname -is a string that begins with a character other than a slash and -.I dirfd -is -.BR AT_FDCWD , -then -.I pathname -is a relative pathname that is interpreted relative to the process's -current working directory. -.TP -A directory-relative pathname -If -.I pathname -is a string that begins with a character other than a slash and -.I dirfd -is a file descriptor that refers to a directory, then -.I pathname -is a relative pathname that is interpreted relative to the directory -referred to by -.IR dirfd . -(See -.BR openat (2) -for an explanation of why this is useful.) -.TP -By file descriptor -If -.I pathname -is an empty string and the -.B AT_EMPTY_PATH -flag is specified in -.I flags -(see below), -then the target file is the one referred to by the file descriptor -.IR dirfd . -.P -.I flags -can be used to influence a pathname-based lookup. -A value for -.I flags -is constructed by ORing together zero or more of the following constants: -.TP -.B AT_EMPTY_PATH -.\" commit 65cfc6722361570bfe255698d9cd4dccaf47570d -If -.I pathname -is an empty string, operate on the file referred to by -.I dirfd -(which may have been obtained using the -.BR open (2) -.B O_PATH -flag). -In this case, -.I dirfd -can refer to any type of file, not just a directory. -.IP -If -.I dirfd -is -.BR AT_FDCWD , -the call operates on the current working directory. -.TP -.B AT_NO_AUTOMOUNT -Don't automount the terminal ("basename") component of -.I pathname -if it is a directory that is an automount point. -This allows the caller to gather attributes of an automount point -(rather than the location it would mount). -This flag has no effect if the mount point has already been mounted over. -.IP -The -.B AT_NO_AUTOMOUNT -flag can be used in tools that scan directories -to prevent mass-automounting of a directory of automount points. -.IP -All of -.BR stat (2), -.BR lstat (2), -and -.BR fstatat (2) -act as though -.B AT_NO_AUTOMOUNT -was set. -.TP -.B AT_SYMLINK_NOFOLLOW -If -.I pathname -is a symbolic link, do not dereference it: -instead return information about the link itself, like -.BR lstat (2). -.P -.I flags -can also be used to control what sort of synchronization the kernel will do -when querying a file on a remote filesystem. -This is done by ORing in one of the following values: -.TP -.B AT_STATX_SYNC_AS_STAT -Do whatever -.BR stat (2) -does. -This is the default and is very much filesystem-specific. -.TP -.B AT_STATX_FORCE_SYNC -Force the attributes to be synchronized with the server. -This may require that -a network filesystem perform a data writeback to get the timestamps correct. -.TP -.B AT_STATX_DONT_SYNC -Don't synchronize anything, but rather just take whatever -the system has cached if possible. -This may mean that the information returned is approximate, but, -on a network filesystem, it may not involve a round trip to the server - even -if no lease is held. -.P -The -.I mask -argument to -.BR statx () -is used to tell the kernel which fields the caller is interested in. -.I mask -is an ORed combination of the following constants: -.P -.in +4n -.TS -lB l. -STATX_TYPE Want stx_mode & S_IFMT -STATX_MODE Want stx_mode & \[ti]S_IFMT -STATX_NLINK Want stx_nlink -STATX_UID Want stx_uid -STATX_GID Want stx_gid -STATX_ATIME Want stx_atime -STATX_MTIME Want stx_mtime -STATX_CTIME Want stx_ctime -STATX_INO Want stx_ino -STATX_SIZE Want stx_size -STATX_BLOCKS Want stx_blocks -STATX_BASIC_STATS [All of the above] -STATX_BTIME Want stx_btime -STATX_ALL The same as STATX_BASIC_STATS | STATX_BTIME. - It is deprecated and should not be used. -STATX_MNT_ID Want stx_mnt_id (since Linux 5.8) -STATX_DIOALIGN Want stx_dio_mem_align and stx_dio_offset_align - (since Linux 6.1; support varies by filesystem) -.TE -.in -.P -Note that, in general, the kernel does -.I not -reject values in -.I mask -other than the above. -(For an exception, see -.B EINVAL -in errors.) -Instead, it simply informs the caller which values are supported -by this kernel and filesystem via the -.I statx.stx_mask -field. -Therefore, -.I "do not" -simply set -.I mask -to -.B UINT_MAX -(all bits set), -as one or more bits may, in the future, be used to specify an -extension to the buffer. -.SS -The returned information -The status information for the target file is returned in the -.I statx -structure pointed to by -.IR statxbuf . -Included in this is -.I stx_mask -which indicates what other information has been returned. -.I stx_mask -has the same format as the -.I mask -argument and bits are set in it to indicate -which fields have been filled in. -.P -It should be noted that the kernel may return fields that weren't -requested and may fail to return fields that were requested, -depending on what the backing filesystem supports. -(Fields that are given values despite being unrequested can just be ignored.) -In either case, -.I stx_mask -will not be equal -.IR mask . -.P -If a filesystem does not support a field or if it has -an unrepresentable value (for instance, a file with an exotic type), -then the mask bit corresponding to that field will be cleared in -.I stx_mask -even if the user asked for it and a dummy value will be filled in for -compatibility purposes if one is available (e.g., a dummy UID and GID may be -specified to mount under some circumstances). -.P -A filesystem may also fill in fields that the caller didn't ask for if it has -values for them available and the information is available at no extra cost. -If this happens, the corresponding bits will be set in -.IR stx_mask . -.P -.\" Background: inode attributes are modified with i_mutex held, but -.\" read by stat() without taking the mutex. -.IR Note : -for performance and simplicity reasons, different fields in the -.I statx -structure may contain state information from different moments -during the execution of the system call. -For example, if -.I stx_mode -or -.I stx_uid -is changed by another process by calling -.BR chmod (2) -or -.BR chown (2), -.BR stat () -might return the old -.I stx_mode -together with the new -.IR stx_uid , -or the old -.I stx_uid -together with the new -.IR stx_mode . -.P -Apart from -.I stx_mask -(which is described above), the fields in the -.I statx -structure are: -.TP -.I stx_blksize -The "preferred" block size for efficient filesystem I/O. -(Writing to a file in -smaller chunks may cause an inefficient read-modify-rewrite.) -.TP -.I stx_attributes -Further status information about the file (see below for more information). -.TP -.I stx_nlink -The number of hard links on a file. -.TP -.I stx_uid -This field contains the user ID of the owner of the file. -.TP -.I stx_gid -This field contains the ID of the group owner of the file. -.TP -.I stx_mode -The file type and mode. -See -.BR inode (7) -for details. -.TP -.I stx_ino -The inode number of the file. -.TP -.I stx_size -The size of the file (if it is a regular file or a symbolic link) in bytes. -The size of a symbolic link is the length of the pathname it contains, -without a terminating null byte. -.TP -.I stx_blocks -The number of blocks allocated to the file on the medium, in 512-byte units. -(This may be smaller than -.IR stx_size /512 -when the file has holes.) -.TP -.I stx_attributes_mask -A mask indicating which bits in -.I stx_attributes -are supported by the VFS and the filesystem. -.TP -.I stx_atime -The file's last access timestamp. -.TP -.I stx_btime -The file's creation timestamp. -.TP -.I stx_ctime -The file's last status change timestamp. -.TP -.I stx_mtime -The file's last modification timestamp. -.TP -.IR stx_dev_major " and " stx_dev_minor -The device on which this file (inode) resides. -.TP -.IR stx_rdev_major " and " stx_rdev_minor -The device that this file (inode) represents if the file is of block or -character device type. -.TP -.I stx_mnt_id -.\" commit fa2fcf4f1df1559a0a4ee0f46915b496cc2ebf60 -The mount ID of the mount containing the file. -This is the same number reported by -.BR name_to_handle_at (2) -and corresponds to the number in the first field in one of the records in -.IR /proc/self/mountinfo . -.TP -.I stx_dio_mem_align -The alignment (in bytes) required for user memory buffers for direct I/O -.RB ( O_DIRECT ) -on this file, -or 0 if direct I/O is not supported on this file. -.IP -.B STATX_DIOALIGN -.RI ( stx_dio_mem_align -and -.IR stx_dio_offset_align ) -is supported on block devices since Linux 6.1. -The support on regular files varies by filesystem; -it is supported by ext4, f2fs, and xfs since Linux 6.1. -.TP -.I stx_dio_offset_align -The alignment (in bytes) required for file offsets and I/O segment lengths -for direct I/O -.RB ( O_DIRECT ) -on this file, -or 0 if direct I/O is not supported on this file. -This will only be nonzero if -.I stx_dio_mem_align -is nonzero, and vice versa. -.P -For further information on the above fields, see -.BR inode (7). -.\" -.SS File attributes -The -.I stx_attributes -field contains a set of ORed flags that indicate additional attributes -of the file. -Note that any attribute that is not indicated as supported by -.I stx_attributes_mask -has no usable value here. -The bits in -.I stx_attributes_mask -correspond bit-by-bit to -.IR stx_attributes . -.P -The flags are as follows: -.TP -.B STATX_ATTR_COMPRESSED -The file is compressed by the filesystem and may take extra resources -to access. -.TP -.B STATX_ATTR_IMMUTABLE -The file cannot be modified: it cannot be deleted or renamed, -no hard links can be created to this file and no data can be written to it. -See -.BR chattr (1). -.TP -.B STATX_ATTR_APPEND -The file can only be opened in append mode for writing. -Random access writing -is not permitted. -See -.BR chattr (1). -.TP -.B STATX_ATTR_NODUMP -File is not a candidate for backup when a backup program such as -.BR dump (8) -is run. -See -.BR chattr (1). -.TP -.B STATX_ATTR_ENCRYPTED -A key is required for the file to be encrypted by the filesystem. -.TP -.BR STATX_ATTR_VERITY " (since Linux 5.5)" -.\" commit 3ad2522c64cff1f5aebb987b00683268f0cc7c29 -The file has fs-verity enabled. -It cannot be written to, and all reads from it will be verified -against a cryptographic hash that covers the -entire file (e.g., via a Merkle tree). -.TP -.BR STATX_ATTR_DAX " (since Linux 5.8)" -The file is in the DAX (cpu direct access) state. -DAX state attempts to -minimize software cache effects for both I/O and memory mappings of this file. -It requires a file system which has been configured to support DAX. -.IP -DAX generally assumes all accesses are via CPU load / store instructions -which can minimize overhead for small accesses, -but may adversely affect CPU utilization for large transfers. -.IP -File I/O is done directly to/from user-space buffers and memory mapped I/O may -be performed with direct memory mappings that bypass the kernel page cache. -.IP -While the DAX property tends to result in data being transferred synchronously, -it does not give the same guarantees as the -.B O_SYNC -flag (see -.BR open (2)), -where data and the necessary metadata are transferred together. -.IP -A DAX file may support being mapped with the -.B MAP_SYNC -flag, which enables a -program to use CPU cache flush instructions to persist CPU store operations -without an explicit -.BR fsync (2). -See -.BR mmap (2) -for more information. -.TP -.BR STATX_ATTR_MOUNT_ROOT " (since Linux 5.8)" -.\" commit 80340fe3605c0e78cfe496c3b3878be828cfdbfe -The file is the root of a mount. -.SH RETURN VALUE -On success, zero is returned. -On error, \-1 is returned, and -.I errno -is set to indicate the error. -.SH ERRORS -.TP -.B EACCES -Search permission is denied for one of the directories -in the path prefix of -.IR pathname . -(See also -.BR path_resolution (7).) -.TP -.B EBADF -.I pathname -is relative but -.I dirfd -is neither -.B AT_FDCWD -nor a valid file descriptor. -.TP -.B EFAULT -.I pathname -or -.I statxbuf -is NULL or points to a location outside the process's -accessible address space. -.TP -.B EINVAL -Invalid flag specified in -.IR flags . -.TP -.B EINVAL -Reserved flag specified in -.IR mask . -(Currently, there is one such flag, designated by the constant -.BR STATX__RESERVED , -with the value 0x80000000U.) -.TP -.B ELOOP -Too many symbolic links encountered while traversing the pathname. -.TP -.B ENAMETOOLONG -.I pathname -is too long. -.TP -.B ENOENT -A component of -.I pathname -does not exist, or -.I pathname -is an empty string and -.B AT_EMPTY_PATH -was not specified in -.IR flags . -.TP -.B ENOMEM -Out of memory (i.e., kernel memory). -.TP -.B ENOTDIR -A component of the path prefix of -.I pathname -is not a directory or -.I pathname -is relative and -.I dirfd -is a file descriptor referring to a file other than a directory. -.SH STANDARDS -Linux. -.SH HISTORY -Linux 4.11, -glibc 2.28. -.SH SEE ALSO -.BR ls (1), -.BR stat (1), -.BR access (2), -.BR chmod (2), -.BR chown (2), -.BR name_to_handle_at (2), -.BR readlink (2), -.BR stat (2), -.BR utime (2), -.BR proc (5), -.BR capabilities (7), -.BR inode (7), -.BR symlink (7) |