diff options
Diffstat (limited to 'upstream/opensuse-tumbleweed/man8/xfs_io.8')
-rw-r--r-- | upstream/opensuse-tumbleweed/man8/xfs_io.8 | 1533 |
1 files changed, 1533 insertions, 0 deletions
diff --git a/upstream/opensuse-tumbleweed/man8/xfs_io.8 b/upstream/opensuse-tumbleweed/man8/xfs_io.8 new file mode 100644 index 00000000..56abe000 --- /dev/null +++ b/upstream/opensuse-tumbleweed/man8/xfs_io.8 @@ -0,0 +1,1533 @@ +.TH xfs_io 8 +.SH NAME +xfs_io \- debug the I/O path of an XFS filesystem +.SH SYNOPSIS +.B xfs_io +[ +.B \-adfimrRstxT +] [ +.B \-c +.I cmd +] ... [ +.B \-C +.I cmd +] ... [ +.B \-p +.I prog +] +.I [ file ] +.br +.B xfs_io \-V +.SH DESCRIPTION +.B xfs_io +is a debugging tool like +.BR xfs_db (8), +but is aimed at examining the regular file I/O paths rather than the +raw XFS volume itself. +These code paths include not only the obvious read/write/mmap interfaces +for manipulating files, but also cover all of the XFS extensions (such +as space preallocation, additional inode flags, etc). +.SH OPTIONS +.B xfs_io +commands may be run interactively (the default) or as arguments on the +command line. +Interactive mode always runs commands on the current open file, whilst commands +run from the command line may be repeated on all open files rather than just the current +open file. +In general, open file iteration will occur for commands that operate on file +content or state. In contrast, commands that operate on filesystem or +system-wide state will only be run on the current file regardless of how many +files are currently open. +Multiple arguments may be given on the command line and they are run in the +sequence given. The program exits one all commands have +been run. +.TP 1.0i +.BI \-c " cmd" +Run the specified command on all currently open files. +To maintain compatibility with historical usage, commands that can not be run on +all open files will still be run but only execute once on the current open file. +Multiple +.B \-c +arguments may be given and may be interleaved on the command line in any order +with +.B \-C +commands. +.TP +.BI \-C " cmd" +Run the specified command only on the current open file. +Multiple +.B \-C +arguments may be given and may be interleaved on the command line in any order +with +.B \-c +commands. +.TP +.BI \-p " prog" +Set the program name for prompts and some error messages, +the default value is +.BR xfs_io . +.TP +.B \-f +Create +.I file +if it does not already exist. +.TP +.B \-r +Open +.I file +read-only, initially. This is required if +.I file +is immutable or append-only. +.TP +.B \-i +Start an idle thread. The purpose of this idle thread is to test io +from a multi threaded process. With single threaded process, +the file table is not shared and file structs are not reference counted. +Spawning an idle thread can help detecting file struct reference leaks. +.TP +.B \-x +Expert mode. Dangerous commands are only available in this mode. +These commands also tend to require additional privileges. +.TP +.B \-V +Prints the version number and exits. +.PP +The other +.BR open (2) +options described below are also available from the command line. +.SH CONCEPTS +.B xfs_io +maintains a number of open files and memory mappings. +Files can be initially opened on the command line (optionally), +and additional files can also be opened later. +.PP +.B xfs_io +commands can be broken up into three groups. +Some commands are aimed at doing regular file I/O - read, write, +sync, space preallocation, etc. +.PP +The second set of commands exist for manipulating memory mapped regions +of a file - mapping, accessing, storing, unmapping, flushing, etc. +.PP +The remaining commands are for the navigation and display of data +structures relating to the open files, mappings, and the filesystems +where they reside. +.PP +Many commands have extensive online help. Use the +.B help +command for more details on any command. +.SH FILE I/O COMMANDS +.TP +.BI "file [ " N " ]" +Display a list of all open files and (optionally) switch to an alternate +current open file. +.TP +.BI "open [[ \-acdfrstRTPL ] " path " ]" +Closes the current file, and opens the file specified by +.I path +instead. Without any arguments, displays statistics about the current +file \- see the +.B stat +command. +.RS 1.0i +.PD 0 +.TP 0.4i +.B \-a +opens append-only (O_APPEND). +.TP +.B \-d +opens for direct I/O (O_DIRECT). +.TP +.B \-f +creates the file if it doesn't already exist (O_CREAT). +.TP +.B \-r +opens read-only (O_RDONLY). +.TP +.B \-s +opens for synchronous I/O (O_SYNC). +.TP +.B \-t +truncates on open (O_TRUNC). +.TP +.B \-n +opens in non-blocking mode if possible (O_NONBLOCK). +.TP +.B \-T +create a temporary file not linked into the filesystem namespace +(O_TMPFILE). The pathname passed must refer to a directory which +is treated as virtual parent for the newly created invisible file. +Can not be used together with the +.B \-r +option. +.TP +.B \-R +marks the file as a realtime XFS file after +opening it, if it is not already marked as such. +.TP +.B \-P +opens the path as a referent only (O_PATH). This is incompatible with other +flags specifying other O_xxx flags apart from +.BR \-L . +.TP +.B \-L +doesn't follow symlinks (O_NOFOLLOW). This is incompatible with other +flags specifying other O_xxx flags apart from +.BR \-P . +.PD +.RE +.TP +.B o +See the +.B open +command. +.TP +.B close +Closes the current open file, marking the next open file as current +(if one exists). +.TP +.B c +See the +.B close +command. +.TP +.B chmod \-r | \-w +Change the mode of the currently open file. The +.B \-r +option will set the file permissions to read-only (0444), whilst the +.B \-w +option will set the file permissions to read-write (0644). This allows xfs_io to +set up mismatches between the file permissions and the open file descriptor +read/write mode to exercise permission checks inside various syscalls. +.TP +.BI "pread [ \-b " bsize " ] [ \-qv ] [ \-FBR [ \-Z " seed " ] ] [ \-V " vectors " ] " "offset length" +Reads a range of bytes in a specified blocksize from the given +.IR offset . +.RS 1.0i +.PD 0 +.TP 0.4i +.B \-b +can be used to set the blocksize into which the +.BR read (2) +requests will be split. The default blocksize is 4096 bytes. +.TP +.B \-q +quiet mode, do not write anything to standard output. +.TP +.B \-v +dump the contents of the buffer after reading, +by default only the count of bytes actually read is dumped. +.TP +.B \-F +read the buffers in a forward sequential direction. +.TP +.B \-B +read the buffers in a reverse sequential direction. +.TP +.B \-R +read the buffers in the give range in a random order. +.TP +.B \-Z seed +specify the random number seed used for random reads. +.TP +.B \-V vectors +Use the vectored IO read syscall +.BR preadv (2) +with a number of blocksize length iovecs. The number of iovecs is set by the +.I vectors +parameter. +.PD +.RE +.TP +.B r +See the +.B pread +command. +.TP +.BI "pwrite [ \-i " file " ] [ \-qdDwNOW ] [ \-s " skip " ] [ \-b " size " ] [ \-S " seed " ] [ \-FBR [ \-Z " zeed " ] ] [ \-V " vectors " ] " "offset length" +Writes a range of bytes in a specified blocksize from the given +.IR offset . +The bytes written can be either a set pattern or read in from another +file before writing. +.RS 1.0i +.PD 0 +.TP 0.4i +.B \-i +allows an input +.I file +to be specified as the source of the data to be written. +.TP +.B \-q +quiet mode, do not write anything to standard output. +.TP +.B \-d +causes direct I/O, rather than the usual buffered +I/O, to be used when reading the input file. +.TP +.B \-w +call +.BR fdatasync (2) +once all writes are complete (included in timing results) +.TP +.B \-N +Perform the +.BR pwritev2 (2) +call with +.IR RWF_NOWAIT . +.TP +.B \-D +Perform the +.BR pwritev2 (2) +call with +.IR RWF_DSYNC . +.TP +.B \-O +perform pwrite once and return the (maybe partial) bytes written. +.TP +.B \-W +call +.BR fsync (2) +once all writes are complete (included in timing results) +.TP +.B \-s +specifies the number of bytes to +.I skip +from the start of the input file before starting to read. +.TP +.B \-b +used to set the blocksize into which the +.BR write (2) +requests will be split. The default blocksize is 4096 bytes. +.TP +.B \-S +used to set the (repeated) fill pattern which +is used when the data to write is not coming from a file. +The default buffer fill pattern value is 0xcdcdcdcd. +.TP +.B \-F +write the buffers in a forward sequential direction. +.TP +.B \-B +write the buffers in a reverse sequential direction. +.TP +.B \-R +write the buffers in the give range in a random order. +.TP +.B \-Z seed +specify the random number seed used for random write +.TP +.B \-V vectors +Use the vectored IO write syscall +.BR pwritev (2) +with a number of blocksize length iovecs. The number of iovecs is set by the +.I vectors +parameter. +.RE +.PD +.TP +.B w +See the +.B pwrite +command. +.TP +.BI "bmap [ \-adelpv ] [ \-n " nx " ]" +Prints the block mapping for the current open file. Refer to the +.BR xfs_bmap (8) +manual page for complete documentation. +.TP +.BI "fiemap [ \-alv ] [ \-n " nx " ] [ " offset " [ " len " ]]" +Prints the block mapping for the current open file using the fiemap +ioctl. Options behave as described in the +.BR xfs_bmap (8) +manual page. +.PP +.RS +Optionally, this command also supports passing the start offset +from where to begin the mapping and the length of that region. +The kernel will return any full extents which intersect with the requested +range, and the +.B fiemap +command will print them in their entirety. If the requested range starts +or ends in a hole, +.B fiemap +will print the hole, truncated to the requested range. +.RE +.TP +.BI "extsize [ \-R | \-D ] [ " value " ]" +Display and/or modify the preferred extent size used when allocating +space for the currently open file. If the +.B \-R +option is specified, a recursive descent is performed +for all directory entries below the currently open file +.RB ( \-D +can be used to restrict the output to directories only). +If the target file is a directory, then the inherited extent size +is set for that directory (new files created in that directory +inherit that extent size). +The +.I value +should be specified in bytes, or using one of the usual units suffixes +(k, m, g, b, etc). The extent size is always reported in units of bytes. +.TP +.BI "cowextsize [ \-R | \-D ] [ " value " ]" +Display and/or modify the preferred copy-on-write extent size used +when allocating space for the currently open file. If the +.B \-R +option is specified, a recursive descent is performed +for all directory entries below the currently open file +.RB ( \-D +can be used to restrict the output to directories only). +If the target file is a directory, then the inherited CoW extent size +is set for that directory (new files created in that directory +inherit that CoW extent size). +The +.I value +should be specified in bytes, or using one of the usual units suffixes +(k, m, g, b, etc). The extent size is always reported in units of bytes. +.TP +.BI "allocsp " size " 0" +Sets the size of the file to +.I size +and zeroes any additional space allocated using the +XFS_IOC_ALLOCSP/XFS_IOC_FREESP system call described in the +.BR xfsctl (3) +manual page. +.B allocsp +and +.B freesp +do exactly the same thing. + +These commands are no longer supported as of Linux 5.17. +.TP +.BI "freesp " size " 0" +See the +.B allocsp +command. +.TP +.BI "fadvise [ \-r | \-s | [[ \-d | \-n | \-w ] " "offset length " ]] +On platforms which support it, allows hints be given to the system +regarding the expected I/O patterns on the file. +The range arguments are required by some advise commands ([*] below), and +the others must have no range arguments. +With no arguments, the POSIX_FADV_NORMAL advice is implied (default readahead). +.RS 1.0i +.PD 0 +.TP 0.4i +.B \-d +the data will not be accessed again in the near future (POSIX_FADV_DONTNEED[*]). +.TP +.B \-n +data will be accessed once and not be reused (POSIX_FADV_NOREUSE[*]). +.TP +.B \-r +expect access to data in random order (POSIX_FADV_RANDOM), which sets readahead to zero. +.TP +.B \-s +expect access to data in sequential order (POSIX_FADV_SEQUENTIAL), +which doubles the default readahead on the file. +.TP +.B \-w +advises the specified data will be needed again (POSIX_FADV_WILLNEED[*]) +which forces the maximum readahead. +.RE +.PD +.TP +.B fdatasync +Calls +.BR fdatasync (2) +to flush the file's in-core data to disk. +.TP +.B fsync +Calls +.BR fsync (2) +to flush all in-core file state to disk. +.TP +.B s +See the +.B fsync +command. +.TP +.BI "sync_range [ \-a | \-b | \-w ] offset length " +On platforms which support it, allows control of syncing a range of the file to +disk. With no options, SYNC_FILE_RANGE_WRITE is implied on the range supplied. +.RS 1.0i +.PD 0 +.TP 0.4i +.B \-a +wait for IO in the given range to finish after writing +(SYNC_FILE_RANGE_WAIT_AFTER). +.TP +.B \-b +wait for IO in the given range to finish before writing +(SYNC_FILE_RANGE_WAIT_BEFORE). +.TP +.B \-w +start writeback of dirty data in the given range (SYNC_FILE_RANGE_WRITE). +.RE +.PD +.TP +.B sync +Calls +.BR sync (2) +to flush all filesystems' in-core data to disk. +.TP +.B syncfs +Calls +.BR syncfs (2) +to flush this filesystem's in-core data to disk. +.TP +.BI resvsp " offset length" +Allocates reserved, unwritten space for part of a file using the +XFS_IOC_RESVSP system call described in the +.BR xfsctl (3) +manual page. +.TP +.BI unresvsp " offset length" +Frees reserved space for part of a file using the XFS_IOC_UNRESVSP +system call described in the +.BR xfsctl (3) +manual page. +.TP +.BI "falloc [ \-k ]" " offset length" +Allocates reserved, unwritten space for part of a file using the +fallocate routine as described in the +.BR fallocate (2) +manual page. +.RS 1.0i +.PD 0 +.TP 0.4i +.B \-k +will set the FALLOC_FL_KEEP_SIZE flag as described in +.BR fallocate (2). +.PD +.RE +.TP +.BI fcollapse " offset length" +Call fallocate with FALLOC_FL_COLLAPSE_RANGE flag as described in the +.BR fallocate (2) +manual page to de-allocates blocks and eliminates the hole created in this process +by shifting data blocks into the hole. +.TP +.BI finsert " offset length" +Call fallocate with FALLOC_FL_INSERT_RANGE flag as described in the +.BR fallocate (2) +manual page to create the hole by shifting data blocks. +.TP +.BI fpunch " offset length" +Punches (de-allocates) blocks in the file by calling fallocate with +the FALLOC_FL_PUNCH_HOLE flag as described in the +.BR fallocate (2) +manual page. +.TP +.BI funshare " offset length" +Call fallocate with FALLOC_FL_UNSHARE_RANGE flag as described in the +.BR fallocate (2) +manual page to unshare all shared blocks within the range. +.TP +.BI "fzero [ \-k ]" " offset length" +Call fallocate with FALLOC_FL_ZERO_RANGE flag as described in the +.BR fallocate (2) +manual page to allocate and zero blocks within the range. +With the +.B -k +option, use the FALLOC_FL_KEEP_SIZE flag as well. +.TP +.BI zero " offset length" +Call xfsctl with +.B XFS_IOC_ZERO_RANGE +as described in the +.BR xfsctl (3) +manual page to allocate and zero blocks within the range. +.TP +.BI truncate " offset" +Truncates the current file at the given offset using +.BR ftruncate (2). +.TP +.BI "sendfile [ \-q ] \-i " srcfile " | \-f " N " [ " "offset length " ] +On platforms which support it, allows a direct in-kernel copy between +two file descriptors. The current open file is the target, the source +must be specified as another open file +.RB ( \-f ) +or by path +.RB ( \-i ). +.RS 1.0i +.B \-q +quiet mode, do not write anything to standard output. +.RE +.TP +.BI "readdir [ -v ] [ -o " offset " ] [ -l " length " ] " +Read a range of directory entries from a given offset of a directory. +.RS 1.0i +.PD 0 +.TP 0.4i +.B \-v +verbose mode - dump dirent content as defined in +.BR readdir (3) +.TP +.B \-o +specify starting +.I offset +.TP +.B \-l +specify total +.I length +to read (in bytes) +.RE +.PD +.TP +.BI "seek \-a | \-d | \-h [ \-r ] [ \-s ] offset" +On platforms that support the +.BR lseek (2) +.B SEEK_DATA +and +.B SEEK_HOLE +options, display the offsets of the specified segments. +.RS 1.0i +.PD 0 +.TP 0.4i +.B \-a +Display both +.B data +and +.B hole +segments starting at the specified +.B offset. +.TP +.B \-d +Display the +.B data +segment starting at the specified +.B offset. +.TP +.B \-h +Display the +.B hole +segment starting at the specified +.B offset. +.TP +.B \-r +Recursively display all the specified segments starting at the specified +.B offset. +.TP +.B \-s +Display the starting lseek(2) offset. This offset will be a calculated value when +both data and holes are displayed together or performing a recusively display. +.RE +.PD +.TP +.BI "reflink [ \-C ] [ \-q ] src_file [src_offset dst_offset length]" +On filesystems that support the +.B FICLONERANGE +or +.B BTRFS_IOC_CLONE_RANGE +ioctls, map +.I length +bytes at offset +.I dst_offset +in the open file to the same physical blocks that are mapped at offset +.I src_offset +in the file +.I src_file +, replacing any contents that may already have been there. If a program +writes into a reflinked block range of either file, the dirty blocks will be +cloned, written to, and remapped ("copy on write") in the affected file, +leaving the other file(s) unchanged. If src_offset, dst_offset, and length +are omitted, all contents of src_file will be reflinked into the open file. +.RS 1.0i +.PD 0 +.TP 0.4i +.B \-C +Print timing statistics in a condensed format. +.TP +.B \-q +Do not print timing statistics at all. +.RE +.PD +.TP +.BI "dedupe [ \-C ] [ \-q ] src_file src_offset dst_offset length" +On filesystems that support the +.B FIDEDUPERANGE +or +.B BTRFS_IOC_FILE_EXTENT_SAME +ioctls, map +.I length +bytes at offset +.I dst_offset +in the open file to the same physical blocks that are mapped at offset +.I src_offset +in the file +.I src_file +, but only if the contents of both ranges are identical. This is known as +block-based deduplication. If a program writes into a reflinked block range of +either file, the dirty blocks will be cloned, written to, and remapped ("copy +on write") in the affected file, leaving the other file(s) unchanged. +.RS 1.0i +.PD 0 +.TP 0.4i +.B \-C +Print timing statistics in a condensed format. +.TP +.B \-q +Do not print timing statistics at all. +.RE +.PD +.TP +.BI "copy_range [ -s " src_offset " ] [ -d " dst_offset " ] [ -l " length " ] src_file | \-f " N +On filesystems that support the +.BR copy_file_range (2) +system call, copies data from the source file into the current open file. +The source must be specified either by path +.RB ( src_file ) +or as another open file +.RB ( \-f ). +If +.I length +is not specified, this command copies data from +.I src_offset +to the end of +.BI src_file +into the dst_file at +.IR dst_offset . +.RS 1.0i +.PD 0 +.TP 0.4i +.B \-s +Copy data from +.I src_file +beginning from +.IR src_offset . +.TP +.B \-d +Copy data into the open file beginning at +.IR dst_offset . +.TP +.B \-l +Copy up to +.I length +bytes of data. +.RE +.PD +.TP +.BI swapext " donor_file " +Swaps extent forks between files. The current open file is the target. The donor +file is specified by path. Note that file data is not copied (file content moves +with the fork(s)). +.TP +.BI "set_encpolicy [ \-c " mode " ] [ \-n " mode " ] [ \-f " flags " ] [ \-s " log2_dusize " ] [ \-v " version " ] [ " keyspec " ]" +On filesystems that support encryption, assign an encryption policy to the +current file. +.I keyspec +is a hex string which specifies the encryption key to use. For v1 encryption +policies, +.I keyspec +must be a 16-character hex string (8 bytes). For v2 policies, +.I keyspec +must be a 32-character hex string (16 bytes). If unspecified, an all-zeroes +value is used. +.RS 1.0i +.PD 0 +.TP 0.4i +.BI \-c " mode" +contents encryption mode (e.g. AES-256-XTS) +.TP +.BI \-n " mode" +filenames encryption mode (e.g. AES-256-CTS) +.TP +.BI \-f " flags" +policy flags (numeric) +.TP +.BI \-s " log2_dusize" +log2 of data unit size. Not supported by v1 policies. +.TP +.BI \-v " version" +policy version. Defaults to 1 or 2 depending on the length of +.IR keyspec ; +or to 1 if +.I keyspec +is unspecified. +.RE +.PD +.TP +.BI "get_encpolicy [ \-1 ] [ \-t ]" +On filesystems that support encryption, display the encryption policy of the +current file. +.RS 1.0i +.PD 0 +.TP 0.4i +.BI \-1 +Use only the old ioctl to get the encryption policy. This only works if the +file has a v1 encryption policy. +.TP +.BI \-t +Test whether v2 encryption policies are supported. Prints "supported", +"unsupported", or an error message. +.RE +.PD +.TP +.BI "add_enckey [ \-d " descriptor " ] [ \-k " key_id " ]" +On filesystems that support encryption, add an encryption key to the filesystem +containing the currently open file. By default, the raw key in binary +(typically 64 bytes long) is read from standard input. +.RS 1.0i +.PD 0 +.TP 0.4i +.BI \-d " descriptor" +key descriptor, as a 16-character hex string (8 bytes). If given, the key will +be available for use by v1 encryption policies that use this descriptor. +Otherwise, the key is added as a v2 policy key, and on success the resulting +"key identifier" will be printed. +.TP +.BI \-k " key_id" +ID of kernel keyring key of type "fscrypt-provisioning". If given, the raw key +will be taken from here rather than from standard input. +.RE +.PD +.TP +.BI "rm_enckey [ -a ] " keyspec +On filesystems that support encryption, remove an encryption key from the +filesystem containing the currently open file. +.I keyspec +is a hex string specifying the key to remove, as a 16-character "key descriptor" +or a 32-character "key identifier". +.RS 1.0i +.PD 0 +.TP 0.4i +.BI \-a +Remove the key for all users who have added it, not just the current user. This +is a privileged operation. +.RE +.PD +.TP +.BI "enckey_status " keyspec +On filesystems that support encryption, display the status of an encryption key. +.I keyspec +is a hex string specifying the key for which to display the status, as a +16-character "key descriptor" or a 32-character "key identifier". +.TP +.BR lsattr " [ " \-R " | " \-D " | " \-a " | " \-v " ]" +List extended inode flags on the currently open file. If the +.B \-R +option is specified, a recursive descent is performed +for all directory entries below the currently open file +.RB ( \-D +can be used to restrict the output to directories only). +This is a depth first descent, it does not follow symlinks and +it also does not cross mount points. + +The current inode flag letters are documented below. +Please refer to the +.BR ioctl_xfs_fsgetxattr "(2)" +documentation for more details about what they mean. + +.PD 0 +.RS +.TP 0.5i +.B r +realtime file (XFS_XFLAG_REALTIME) + +.TP +.B p +prealloc (XFS_XFLAG_PREALLOC) + +.TP +.B i +immutable (XFS_XFLAG_IMMUTABLE) + +.TP +.B a +append only (XFS_XFLAG_APPEND) + +.TP +.B s +synchronous file writes (XFS_XFLAG_SYNC) + +.TP +.B A +noatime (XFS_XFLAG_NOATIME) + +.TP +.B d +nodump (XFS_XFLAG_NODUMP) + +.TP +.B t +inherit realtime flag (XFS_XFLAG_RTINHERIT)" + +.TP +.B P +inherit project id (XFS_XFLAG_PROJINHERIT) + +.TP +.B n +no symlink creation (XFS_XFLAG_NOSYMLINKS) + +.TP +.B e +extent size hint (XFS_XFLAG_EXTSIZE) + +.TP +.B E +inherit extent size hint (XFS_XFLAG_EXTSZINHERIT) + +.TP +.B f +nodefrag (XFS_XFLAG_NODEFRAG) + +.TP +.B S +filestream allocator (XFS_XFLAG_FILESTREAM) + +.TP +.B x +direct access persistent memory (XFS_XFLAG_DAX) + +.TP +.B C +copy on write extent hint (XFS_XFLAG_COWEXTSIZE) + +.TP +.B X +has extended attributes (XFS_XFLAG_HASATTR) +.RE + +.TP +.BR chattr " [ " \-R " | " \-D " ] [ " + / \-riasAdtPneEfSxC " ]" +Change extended inode flags on the currently open file. The +.B \-R +and +.B \-D +options have the same meaning as above. + +See the +.B lsattr +command above for the list of inode flag letters. + +.TP +.BI "flink " path +Link the currently open file descriptor into the filesystem namespace. +.TP +.BR stat " [ " \-v "|" \-r " ]" +Selected statistics from +.BR stat (2) +and the XFS_IOC_GETXATTR system call on the current file. If the +.B \-v +option is specified, the atime (last access), mtime +(last modify), and ctime (last change) timestamps are also displayed. The +.B \-r +option dumps raw fields from the stat structure. +.TP +.BI "statx [ \-v|\-r ][ \-m " basic " | \-m " all " | -m " <mask> " ][ \-FD ]" +Selected statistics from +.BR stat (2) +and the XFS_IOC_GETXATTR system call on the current file. +.RS 1.0i +.PD 0 +.TP 0.4i +.B \-v +Show timestamps. +.TP +.B \-r +Dump raw statx structure values. +.TP +.B \-m basic +Set the field mask for the statx call to STATX_BASIC_STATS. +.TP +.B \-m all +Set the the field mask for the statx call to STATX_ALL (default). +.TP +.B \-m <mask> +Specify a numeric field mask for the statx call. +.TP +.B \-F +Force the attributes to be synced with the server. +.TP +.B \-D +Don't sync attributes with the server. +.PD +.RE +.TP +.BR chproj " [ " \-R | \-D " ]" +Modifies the project identifier associated with the current path. The +.B \-R +option will recursively descend if the current path is a directory. The +.B \-D +option will also recursively descend, only setting modifying projects +on subdirectories. See the +.BR xfs_quota (8) +manual page for more information about project identifiers. +.TP +.BR lsproj " [ " \-R | \-D " ]" +Displays the project identifier associated with the current path. The +.B \-R +and +.B \-D +options behave as described above, in +.B chproj. +.TP +.BR parent " [ " \-cpv " ]" +By default this command prints out the parent inode numbers, +inode generation numbers and basenames of all the hardlinks which +point to the inode of the current file. +.RS 1.0i +.PD 0 +.TP 0.4i +.B \-p +the output is similar to the default output except pathnames up to +the mount-point are printed out instead of the component name. +.TP +.B \-c +the file's filesystem will check all the parent attributes for consistency. +.TP +.B \-v +verbose output will be printed. +.RE +.IP +.B [NOTE: Not currently operational on Linux.] +.RE +.PD +.TP +.BI utimes " atime_sec atime_nsec mtime_sec mtime_nsec" +The utimes command changes the atime and mtime of the current file. +sec uses UNIX timestamp notation and is the seconds elapsed since +1970-01-01 00:00:00 UTC. +nsec is the nanoseconds since the sec. This value needs to be in +the range 0-999999999 with UTIME_NOW and UTIME_OMIT being exceptions. +Each (sec, nsec) pair constitutes a single timestamp value. + + +.SH MEMORY MAPPED I/O COMMANDS +.TP +.BI "mmap [ " N " | [[ \-rwxS ] [\-s " size " ] " "offset length " ]] +With no arguments, +.B mmap +shows the current mappings. Specifying a single numeric argument +.I N +sets the current mapping. If two arguments are specified (a range specified by +.I offset +and +.IR length ), +a new mapping is created spanning the range, and the protection mode can +be given as a combination of PROT_READ +.RB ( \-r ), +PROT_WRITE +.RB ( \-w ), +and PROT_EXEC +.RB ( \-x ). +The mapping will be created with the MAP_SHARED flag by default, or with the +Linux specific (MAP_SYNC | MAP_SHARED_VALIDATE) flags if +.B -S +is given. +.BI \-s " size" +is used to do a mmap(size) && munmap(size) operation at first, try to reserve some +extendible free memory space, if +.I size +is bigger than +.I length +parameter. But there's not guarantee that the memory after +.I length +( up to +.I size +) will stay free. +.B e.g. +"mmap -rw -s 8192 1024" will mmap 0 ~ 1024 bytes memory, but try to reserve 1024 ~ 8192 +free space(no guarantee). This free space will helpful for "mremap 8192" without +MREMAP_MAYMOVE flag. +.TP +.B mm +See the +.B mmap +command. +.TP +.BI "mremap [ \-f <new_address> ] [ \-m ] " new_length +Changes the current mapping size to +.IR new_length . +Whether the mapping may be moved is controlled by the flags passed; +MREMAP_FIXED +.RB ( \-f ), +or MREMAP_MAYMOVE +.RB ( \-m ). +.IR new_length +specifies a page-aligned address to which the mapping must be moved. It +can be set to 139946004389888, 4096k or 1g etc. +.TP +.B mrm +See the +.B mremap +command. +.TP +.B munmap +Unmaps the current memory mapping. +.TP +.B mu +See the +.B munmap +command. +.TP +.BI "mread [ \-f | \-v ] [ \-r ] [" " offset length " ] +Accesses a segment of the current memory mapping, optionally dumping it to +the standard output stream (with +.B \-v +or +.B \-f +option) for inspection. The accesses are performed sequentially from the start +.I offset +by default, but can also be done from the end backwards through the +mapping if the +.B \-r +option in specified. +The two verbose modes differ only in the relative offsets they display, the +.B \-f +option is relative to file start, whereas +.B \-v +shows offsets relative to the start of the mapping. +.TP +.B mr +See the +.B mread +command. +.TP +.BI "mwrite [ \-r ] [ \-S " seed " ] [ " "offset length " ] +Stores a byte into memory for a range within a mapping. +The default stored value is 'X', repeated to fill the range specified, +but this can be changed using the +.B \-S +option. +The memory stores are performed sequentially from the start offset by default, +but can also be done from the end backwards through the mapping if the +.B \-r +option in specified. +.TP +.B mw +See the +.B mwrite +command. +.TP +.BI "msync [ \-i ] [ \-a | \-s ] [ " "offset length " ] +Writes all modified copies of pages over the specified range (or entire +mapping if no range specified) to their backing storage locations. +Also, optionally invalidates +.RB ( \-i ) +so that subsequent references to the pages will be obtained from their +backing storage locations (instead of cached copies). +The flush can be done synchronously +.RB ( \-s) +or asynchronously +.RB ( \-a ). +.TP +.B ms +See the +.B msync +command. +.TP +.BI "madvise [ \-d | \-r | \-s | \-w ] [ " "offset length " ] +Modifies page cache behavior when operating on the current mapping. +The range arguments are required by some advise commands ([*] below). +With no arguments, the POSIX_MADV_NORMAL advice is implied (default readahead). +.RS 1.0i +.PD 0 +.TP 0.4i +.B \-d +the pages will not be needed (POSIX_MADV_DONTNEED[*]). +.TP +.B \-r +expect random page references (POSIX_MADV_RANDOM), which sets readahead to zero. +.TP +.B \-s +expect sequential page references (POSIX_MADV_SEQUENTIAL), +which doubles the default readahead on the file. +.TP +.B \-w +advises the specified pages will be needed again (POSIX_MADV_WILLNEED[*]) +which forces the maximum readahead. +.RE +.PD +.TP +.B mincore +Dumps a list of pages or ranges of pages that are currently in core, +for the current memory mapping. + +.SH FILESYSTEM COMMANDS +.TP +.BI "bulkstat [ \-a " agno " ] [ \-d ] [ \-e " endino " ] [ \-n " batchsize " ] [ \-q ] [ \-s " startino " ] [ \-v " version" ] +Display raw stat information about a bunch of inodes in an XFS filesystem. +Options are as follows: +.RS 1.0i +.PD 0 +.TP +.BI \-a " agno" +Display only results from the given allocation group. +If not specified, all results returned will be displayed. +.TP +.BI \-d +Print debugging information about call results. +.TP +.BI \-e " endino" +Stop displaying records when this inode number is reached. +Defaults to stopping when the system call stops returning results. +.TP +.BI \-n " batchsize" +Retrieve at most this many records per call. +Defaults to 4,096. +.TP +.BI \-q +Run quietly. +Does not parse or output retrieved bulkstat information. +.TP +.BI \-s " startino" +Display inode allocation records starting with this inode. +Defaults to the first inode in the filesystem. +If the given inode is not allocated, results will begin with the next allocated +inode in the filesystem. +.TP +.BI \-v " version" +Use a particular version of the kernel interface. +Currently supported versions are 1 and 5. +.RE +.PD +.TP +.BI "bulkstat_single [ \-d ] [ \-v " version " ] [ " inum... " | " special... " ] +Display raw stat information about individual inodes in an XFS filesystem. +The +.B \-d +and +.B \-v +options are the same as the +.B bulkstat +command. +Arguments must be inode numbers or any of the special values: +.RS 1.0i +.PD 0 +.TP +.B root +Display information about the root directory inode. +.RE +.PD +.TP +.B freeze +Suspend all write I/O requests to the filesystem of the current file. +Only available in expert mode and requires privileges. +.TP +.B thaw +Undo the effects of a filesystem freeze operation. +Only available in expert mode and requires privileges. +.TP +.BI "inject [ " tag " ]" +Inject errors into a filesystem to observe filesystem behavior at +specific points under adverse conditions. Without the +.I tag +argument, displays the list of error tags available. +Only available in expert mode and requires privileges. +.TP +.BI "resblks [ " blocks " ]" +Get and/or set count of reserved filesystem blocks using the +XFS_IOC_GET_RESBLKS or XFS_IOC_SET_RESBLKS system calls. +Note \-\- this can be useful for exercising out of space behavior. +Only available in expert mode and requires privileges. +.TP +.BR shutdown " [ " \-f " ]" +Force the filesystem to shut down, preventing any further IO. +XFS and other filesystems implement this functionality, although implementation +details may differ slightly. +Only available in expert mode and requires privileges. +.PP +.RS +By default, the filesystem will not attempt to flush completed transactions to +disk before shutting down the filesystem. This simulates a disk failure or +crash. +.RE +.RS 1.0i +.PD 0 +.TP 0.4i +.B \-f +Force the filesystem to flush all completed transactions to disk before shutting +down, matching XFS behavior when critical corruption is encountered. +.PD +.RE +.TP +.B statfs [ -c ] [ -g ] [ -s ] +Report selected statistics on the filesystem where the current file resides. +The default behavior is to enable all three reporting options: +.RS 1.0i +.PD 0 +.TP +.BI \-c +Display +.B XFS_IOC_FSCOUNTERS +summary counter data. +.TP +.BI \-g +Display +.B XFS_IOC_FSGEOMETRY +filesystem geometry data. +.TP +.BI \-s +Display +.BR statfs (2) +data. +.TP +.RE +.PD +.TP +.BI "inode [ [ -n ] " number " ] [ -v ]" +The inode command queries physical information about an inode. With +no arguments, it will return 1 or 0, indicating whether or not any +inode numbers greater than 32 bits are currently in use in the filesystem. +If given an inode +.I number +as an argument, the command will return the same inode +.I number +if it is in use, or 0 if not. With +.BI \-n " number" +, the next used inode number after this +.I number +will be returned, or zero if the supplied inode number is the highest one +in use. With +.B \-v +the command will also report the number of bits (32 or 64) used by the +inode +.I number +printed in the result; if no inode +.I number +was specified on the command line, the maximum possible inode number in +the system will be printed along with its size. +.PD +.TP +.BI "inumbers [ \-a " agno " ] [ \-d ] [ \-e " endino " ] [ \-n " batchsize " ] [ \-s " startino " ] [ \-v " version " ] +Prints allocation information about groups of inodes in an XFS filesystem. +Callers can use this information to figure out which inodes are allocated. +Options are as follows: +.RS 1.0i +.PD 0 +.TP +.BI \-a " agno" +Display only results from the given allocation group. +If not specified, all results returned will be displayed. +.TP +.BI \-d +Print debugging information about call results. +.TP +.BI \-e " endino" +Stop displaying records when this inode number is reached. +Defaults to stopping when the system call stops returning results. +.TP +.BI \-n " batchsize" +Retrieve at most this many records per call. +Defaults to 4,096. +.TP +.BI \-s " startino" +Display inode allocation records starting with this inode. +Defaults to the first inode in the filesystem. +If the given inode is not allocated, results will begin with the next allocated +inode in the filesystem. +.TP +.BI \-v " version" +Use a particular version of the kernel interface. +Currently supported versions are 1 and 5. +.RE +.PD +.TP +.BI "scrub " type " [ " agnumber " | " "ino" " " "gen" " ]" +Scrub internal XFS filesystem metadata. The +.BI type +parameter specifies which type of metadata to scrub. +For AG metadata, one AG number must be specified. +For file metadata, the scrub is applied to the open file unless the +inode number and generation number are specified. +.RE +.PD +.TP +.BI "repair " type " [ " agnumber " | " "ino" " " "gen" " ]" +Repair internal XFS filesystem metadata. The +.BI type +parameter specifies which type of metadata to repair. +For AG metadata, one AG number must be specified. +For file metadata, the repair is applied to the open file unless the +inode number and generation number are specified. +The +.B -R +option can be specified to force rebuilding of a metadata structure. +.TP +.BI "label" " " "[ -c | -s " label " ] " +On filesystems that support online label manipulation, get, set, or clear the +filesystem label. With no options, print the current filesystem label. The +.B \-c +option clears the filesystem label by setting it to the null string. The +.BI "\-s " label +option sets the filesystem label to +.IR label . +If the label is longer than the filesystem will accept, +.B xfs_io +will print an error message. XFS filesystem labels can be at most 12 +characters long. +.TP +.BI "fsmap [ \-d | \-l | \-r ] [ \-m | \-v ] [ \-n " nx " ] [ " start " ] [ " end " ] +Prints the mapping of disk blocks used by the filesystem hosting the current +file. The map lists each extent used by files, allocation group metadata, +journalling logs, and static filesystem metadata, as well as any +regions that are unused. +Each line of the listings takes the following form: +.PP +.RS +.IR extent ": " major ":" minor " [" startblock .. endblock "]: " owner " " startoffset .. endoffset " " length +.PP +Static filesystem metadata, allocation group metadata, btrees, +journalling logs, and free space are marked by replacing the +.IR startoffset .. endoffset +with the appropriate marker. +All blocks, offsets, and lengths are specified in units of 512-byte +blocks, no matter what the filesystem's block size is. +The optional +.I start +and +.I end +arguments can be used to constrain the output to a particular range of +disk blocks. +If these two options are specified, exactly one of +.BR "-d" ", " "-l" ", or " "-r" +must also be set. +.RE +.RS 1.0i +.PD 0 +.TP +.BI \-d +Display only extents from the data device. +This option only applies for XFS filesystems. +.TP +.BI \-l +Display only extents from the external log device. +This option only applies to XFS filesystems. +.TP +.BI \-r +Display only extents from the realtime device. +This option only applies to XFS filesystems. +.TP +.BI \-m +Display results in a machine readable format (CSV). +This option is not compatible with the +.B \-v +flag. +The columns of the output are: extent number, device major, device minor, +physical start, physical end, owner, offset start, offset end, length. +The start, end, and length numbers are provided in units of 512b. +The owner field is a special string that takes the form: + +.RS 1.0i +.PD 0 +.TP 0.4i +.I inode_%lld_data +for inode data. +.TP +.I inode_%lld_data_bmbt +for inode data extent maps. +.TP +.I inode_%lld_attr +for inode extended attribute data. +.TP +.I inode_%lld_attr_bmbt +for inode extended attribute extent maps. +.TP +.I special_%u:%u +for other filesystem metadata. +.PD +.RE + +.TP +.BI \-n " num_extents" +If this option is given, +.B fsmap +obtains the extent list of the file in groups of +.I num_extents +extents. +In the absence of +.BR "-n" ", " "fsmap" +queries the system for extents in groups of 131,072 records. +.TP +.B \-v +Shows verbose information. +When this flag is specified, additional AG specific information is +appended to each line in the following form: +.IP +.RS 1.2i +.IR agno " (" startagblock .. endagblock ") " nblocks " " flags +.RE +.IP +A second +.B \-v +option will print out the +.I flags +legend. +This option is not compatible with the +.B \-m +flag. +.RE +.PD +.TP +.B fsuuid +Print the mounted filesystem UUID. + + +.SH OTHER COMMANDS +.TP +.BR "help [ " command " ]" +Display a brief description of one or all commands. +.TP +.B print +Display a list of all open files and memory mapped regions. +The current file and current mapping are distinguishable from +any others. +.TP +.B p +See the +.B print +command. +.TP +.B quit +Exit +.BR xfs_io . +.TP +.B q +See the +.B quit +command. +.TP +.BI "log_writes \-d " device " \-m " mark +Create a mark named +.I mark +in the dm-log-writes log specified by +.I device. +This is intended to be equivalent to the shell command: + +.B dmsetup message +.I device +.B 0 mark +.I mark +.PD +.RE +.TP +.B lw +See the +.B log_writes +command. +.TP +.B crc32cselftest +Test the internal crc32c implementation to make sure that it computes results +correctly. +.SH SEE ALSO +.BR mkfs.xfs (8), +.BR xfsctl (3), +.BR xfs_bmap (8), +.BR xfs_db (8), +.BR xfs (5), +.BR fdatasync (2), +.BR fstat (2), +.BR fstatfs (2), +.BR fsync (2), +.BR ftruncate (2), +.BR futimens (3), +.BR mmap (2), +.BR msync (2), +.BR open (2), +.BR pread (2), +.BR pwrite (2), +.BR readdir (3), +.BR dmsetup (8). |