summaryrefslogtreecommitdiffstats
path: root/upstream/archlinux/man2/ioctl_xfs_fsgetxattr.2
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/archlinux/man2/ioctl_xfs_fsgetxattr.2')
-rw-r--r--upstream/archlinux/man2/ioctl_xfs_fsgetxattr.2243
1 files changed, 243 insertions, 0 deletions
diff --git a/upstream/archlinux/man2/ioctl_xfs_fsgetxattr.2 b/upstream/archlinux/man2/ioctl_xfs_fsgetxattr.2
new file mode 100644
index 00000000..2c626a7e
--- /dev/null
+++ b/upstream/archlinux/man2/ioctl_xfs_fsgetxattr.2
@@ -0,0 +1,243 @@
+.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
+.\" SPDX-License-Identifier: GPL-2.0+
+.\" %%%LICENSE_END
+.TH IOCTL-XFS-FSGETXATTR 2 2019-06-17 "XFS"
+.SH NAME
+ioctl_xfs_fsgetxattr \- query information for an open file
+.SH SYNOPSIS
+.br
+.B #include <linux/fs.h>
+.PP
+.BI "int ioctl(int " fd ", XFS_IOC_FSGETXATTR, struct fsxattr *" arg );
+.br
+.BI "int ioctl(int " fd ", XFS_IOC_FSGETXATTRA, struct fsxattr *" arg );
+.br
+.BI "int ioctl(int " fd ", XFS_IOC_FSSETXATTR, struct fsxattr *" arg );
+.SH DESCRIPTION
+Query or set additional attributes associated with files in various file
+systems.
+The attributes are conveyed in a structure of the form:
+.PP
+.in +4n
+.nf
+struct fsxattr {
+ __u32 fsx_xflags;
+ __u32 fsx_extsize;
+ __u32 fsx_nextents;
+ __u32 fsx_projid;
+ __u32 fsx_cowextsize;
+ unsigned char fsx_pad[8];
+};
+.fi
+.in
+.PP
+.I fsx_xflags
+are extended flags that apply to this file.
+Refer to the section
+.B XFS INODE FLAGS
+below for more information.
+
+.PP
+.I fsx_extsize
+is the preferred extent allocation size for data blocks mapped to this file,
+in units of filesystem blocks.
+If this value is zero, the filesystem will choose a default option, which
+is currently zero.
+If
+.B XFS_IOC_FSSETXATTR
+is called with
+.B XFS_XFLAG_EXTSIZE
+set in
+.I fsx_xflags
+and this field set to zero, the XFLAG will also be cleared.
+.PP
+.I fsx_nextents
+is the number of data extents in this file.
+If
+.B XFS_IOC_FSGETXATTRA
+was used, then this is the number of extended attribute extents in the file.
+.PP
+.I fsx_projid
+is the project ID of this file.
+.PP
+.I fsx_cowextsize
+is the preferred extent allocation size for copy on write operations
+targeting this file, in units of filesystem blocks.
+If this field is zero, the filesystem will choose a default option,
+which is currently 128 filesystem blocks.
+If
+.B XFS_IOC_FSSETXATTR
+is called with
+.B XFS_XFLAG_COWEXTSIZE
+set in
+.I fsx_xflags
+and this field set to zero, the XFLAG will also be cleared.
+
+.PP
+.I fsx_pad
+must be zeroed.
+
+.SH XFS INODE FLAGS
+This field can be a combination of the following:
+
+.TP
+.B XFS_XFLAG_REALTIME
+The file is a realtime file.
+This bit can only be changed on a file when it has no allocated extents.
+.TP
+.B XFS_XFLAG_PREALLOC
+The file has preallocated space.
+.TP
+.B XFS_XFLAG_IMMUTABLE
+The file is immutable - it cannot be modified, deleted or renamed,
+no link can be created to this file and no data can be written to the
+file.
+Only the superuser or a process possessing the CAP_LINUX_IMMUTABLE
+capability can set or clear this flag.
+If this flag is set before a
+.B XFS_IOC_FSSETXATTR
+call and would not be cleared by the call, then no other attributes can be
+changed and
+.B EPERM
+will be returned.
+.TP
+.B XFS_XFLAG_APPEND
+The file is append-only - it can only be opened in append mode for
+writing.
+For directories, this means that files cannot be unlinked from this directory.
+Only the superuser or a process possessing the CAP_LINUX_IMMUTABLE
+capability can set or clear this flag.
+.TP
+.B XFS_XFLAG_SYNC
+All writes to the file are synchronous.
+If set on a directory and the
+.B /proc/sys/fs/xfs/inherit_sync
+tunable is set to 1, new files and subdirectories created in the directory
+will also have the flag set.
+.TP
+.B XFS_XFLAG_NOATIME
+When the file is accessed, its atime record is not modified.
+If set on a directory and the
+.B /proc/sys/fs/xfs/inherit_noatime
+tunable is set to 1, new files and subdirectories created in the directory
+will also have the flag set.
+.TP
+.B XFS_XFLAG_NODUMP
+The file should be skipped by backup utilities.
+If set on a directory and the
+.B /proc/sys/fs/xfs/inherit_nodump
+tunable is set to 1, new files and subdirectories created in the directory
+will also have the flag set.
+.TP
+.B XFS_XFLAG_RTINHERIT
+Realtime inheritance bit - new files created in the directory
+will be automatically created as realtime files.
+If set on a directory, new subdirectories created in the directory will also
+have the inheritance flag set.
+.TP
+.B XFS_XFLAG_PROJINHERIT
+Project inheritance bit - new files and directories created in
+this directory will inherit the project ID of this directory.
+If set on a directory, new subdirectories created in the directory will also
+have the inheritance flag set.
+.TP
+.B XFS_XFLAG_NOSYMLINKS
+Disallows creation of symbolic links in the directory.
+This flag can only be set on a directory.
+If set on a directory and the
+.B /proc/sys/fs/xfs/inherit_nosymlinks
+tunable is set to 1, new files and subdirectories created in the directory
+will also have the flag set.
+.TP
+.B XFS_XFLAG_EXTSIZE
+Extent size bit - if a basic extent size value is set on the file
+then the allocator will allocate in multiples of the set size for
+this file (see
+.B fsx_extsize
+below).
+The extent size can only be changed on a file when it has no allocated extents.
+.TP
+.B XFS_XFLAG_EXTSZINHERIT
+Extent size inheritance bit - new files and directories created in
+the directory will inherit the extent size value (see
+.B fsx_extsize
+below) of the parent directory.
+New subdirectories created in the directory will inherit the extent size
+inheritance bit.
+.TP
+.B XFS_XFLAG_NODEFRAG
+No defragment file bit - the file should be skipped during a defragmentation
+operation.
+If set on a directory and the
+.B /proc/sys/fs/xfs/inherit_nodefrag
+tunable is set to 1, new files and subdirectories created in the directory
+will also have the flag set.
+.TP
+.B XFS_XFLAG_FILESTREAM
+Filestream allocator bit - allows a directory to reserve an allocation group
+for exclusive use by files created within that directory.
+Files being written in other directories will not use the same allocation group
+and so files within different directories will not interleave extents on disk.
+The reservation is only active while files are being created and written into
+the directory.
+If set on a directory, new files and subdirectories created in the directory
+will also have the flag set.
+.TP
+.B XFS_XFLAG_DAX
+If the filesystem lives on directly accessible persistent memory, reads and
+writes to this file will go straight to the persistent memory, bypassing the
+page cache.
+If set on a directory, new files and subdirectories created in the directory
+will also have the flag set.
+This flag cannot be set on filesystems which have the reflink feature enabled.
+.TP
+.B XFS_XFLAG_COWEXTSIZE
+Copy on Write Extent size bit - if a CoW extent size value is set on the file,
+the allocator will allocate extents for staging a copy on write operation
+in multiples of the set size for this file (see
+.B fsx_cowextsize
+below).
+If set on a directory, new files and subdirectories created in the directory
+will have both the flag and the CoW extent size value set.
+.TP
+.B XFS_XFLAG_HASATTR
+The file has extended attributes associated with it.
+
+.SH RETURN VALUE
+On error, \-1 is returned, and
+.I errno
+is set to indicate the error.
+.PP
+.SH ERRORS
+Error codes can be one of, but are not limited to, the following:
+.TP
+.B EACCESS
+Caller does not have sufficient access to change the attributes.
+.TP
+.B EFAULT
+The kernel was not able to copy into the userspace buffer.
+.TP
+.B EFSBADCRC
+Metadata checksum validation failed while performing the query.
+.TP
+.B EFSCORRUPTED
+Metadata corruption was encountered while performing the query.
+.TP
+.B EINVAL
+One of the arguments was not valid.
+.TP
+.B EIO
+An I/O error was encountered while performing the query.
+.TP
+.B ENOMEM
+There was insufficient memory to perform the query.
+.TP
+.B EPERM
+Caller did not have permission to change the attributes.
+.SH CONFORMING TO
+This API is implemented by the ext4, xfs, btrfs, and f2fs filesystems on the
+Linux kernel.
+Not all fields may be understood by filesystems other than xfs.
+.SH SEE ALSO
+.BR ioctl (2),
+.BR ioctl_iflags (2)