1xfs_io(8)                   System Manager's Manual                  xfs_io(8)
2
3
4

NAME

6       xfs_io - debug the I/O path of an XFS filesystem
7

SYNOPSIS

9       xfs_io  [  -adfimrRstxT  ]  [ -c cmd ] ... [ -C cmd ] ... [ -p prog ] [
10       file ]
11       xfs_io -V
12

DESCRIPTION

14       xfs_io is a debugging tool like xfs_db(8), but is  aimed  at  examining
15       the  regular  file  I/O  paths  rather  than the raw XFS volume itself.
16       These code paths include not only the  obvious  read/write/mmap  inter‐
17       faces  for manipulating files, but also cover all of the XFS extensions
18       (such as space preallocation, additional inode flags, etc).
19

OPTIONS

21       xfs_io commands may be run interactively (the default) or as  arguments
22       on the command line.  Interactive mode always runs commands on the cur‐
23       rent open file, whilst commands  run  from  the  command  line  may  be
24       repeated  on all open files rather than just the current open file.  In
25       general, open file iteration will occur for commands  that  operate  on
26       file content or state. In contrast, commands that operate on filesystem
27       or system-wide state will only be run on the current file regardless of
28       how  many files are currently open.  Multiple arguments may be given on
29       the command line and they are run in the sequence  given.  The  program
30       exits one all commands have been run.
31
32       -c cmd    Run  the  specified  command on all currently open files.  To
33                 maintain compatibility with historical usage,  commands  that
34                 can  not  be run on all open files will still be run but only
35                 execute once on the current open file.  Multiple -c arguments
36                 may  be  given  and may be interleaved on the command line in
37                 any order with -C commands.
38
39       -C cmd    Run the specified command only  on  the  current  open  file.
40                 Multiple  -C arguments may be given and may be interleaved on
41                 the command line in any order with -c commands.
42
43       -p prog   Set the program name for prompts and some error messages, the
44                 default value is xfs_io.
45
46       -f        Create file if it does not already exist.
47
48       -r        Open  file  read-only, initially. This is required if file is
49                 immutable or append-only.
50
51       -i        Start an idle thread. The purpose of this idle thread  is  to
52                 test  io  from a multi threaded process. With single threaded
53                 process, the file table is not shared and  file  structs  are
54                 not  reference  counted.   Spawning  an  idle thread can help
55                 detecting file struct reference leaks.
56
57       -x        Expert mode. Dangerous commands are only  available  in  this
58                 mode.   These commands also tend to require additional privi‐
59                 leges.
60
61       -V        Prints the version number and exits.
62
63       The other open(2) options described below are also available  from  the
64       command line.
65

CONCEPTS

67       xfs_io maintains a number of open files and memory mappings.  Files can
68       be initially opened on the command line  (optionally),  and  additional
69       files can also be opened later.
70
71       xfs_io  commands can be broken up into three groups.  Some commands are
72       aimed at doing regular file I/O - read, write, sync,  space  prealloca‐
73       tion, etc.
74
75       The second set of commands exist for manipulating memory mapped regions
76       of a file - mapping, accessing, storing, unmapping, flushing, etc.
77
78       The remaining commands are for  the  navigation  and  display  of  data
79       structures  relating  to  the open files, mappings, and the filesystems
80       where they reside.
81
82       Many commands have extensive online help. Use the help command for more
83       details on any command.
84

FILE I/O COMMANDS

86       file [ N ]
87              Display  a  list of all open files and (optionally) switch to an
88              alternate current open file.
89
90       open [[ -acdfrstRTPL ] path ]
91              Closes the current file, and opens the file  specified  by  path
92              instead.  Without  any  arguments, displays statistics about the
93              current file - see the stat command.
94                 -a  opens append-only (O_APPEND).
95                 -d  opens for direct I/O (O_DIRECT).
96                 -f  creates the file if it doesn't already exist (O_CREAT).
97                 -r  opens read-only (O_RDONLY).
98                 -s  opens for synchronous I/O (O_SYNC).
99                 -t  truncates on open (O_TRUNC).
100                 -n  opens in non-blocking mode if possible (O_NONBLOCK).
101                 -T  create a temporary file not linked  into  the  filesystem
102                     namespace (O_TMPFILE).  The pathname passed must refer to
103                     a directory which is treated as virtual  parent  for  the
104                     newly  created  invisible file.  Can not be used together
105                     with the -r option.
106                 -R  marks the file as a realtime XFS file after  opening  it,
107                     if it is not already marked as such.
108                 -P  opens  the  path  as  a  referent only (O_PATH).  This is
109                     incompatible with  other  flags  specifying  other  O_xxx
110                     flags apart from -L.
111                 -L  doesn't follow symlinks (O_NOFOLLOW).  This is incompati‐
112                     ble with other flags specifying other O_xxx  flags  apart
113                     from -P.
114
115       o      See the open command.
116
117       close  Closes the current open file, marking the next open file as cur‐
118              rent (if one exists).
119
120       c      See the close command.
121
122       pread [ -b bsize ] [ -v ] [ -FBR [ -Z seed ] ] [ -V  vectors  ]  offset
123       length
124              Reads  a  range of bytes in a specified blocksize from the given
125              offset.
126                 -b  can be used to set the blocksize into which  the  read(2)
127                     requests  will  be  split.  The default blocksize is 4096
128                     bytes.
129                 -v  dump the contents of the buffer after reading, by default
130                     only the count of bytes actually read is dumped.
131                 -F  read the buffers in a forwards sequential direction.
132                 -B  read the buffers in a reserve sequential direction.
133                 -R  read the buffers in the give range in a random order.
134                 -Z seed
135                     specify the random number seed used for random reads.
136                 -V vectors
137                     Use  the vectored IO read syscall preadv(2) with a number
138                     of blocksize length iovecs. The number of iovecs  is  set
139                     by the vectors parameter.
140
141       r      See the pread command.
142
143       pwrite  [  -i  file ] [ -dDwNOW ] [ -s skip ] [ -b size ] [ -S seed ] [
144       -FBR [ -Z zeed ] ] [ -V vectors ] offset length
145              Writes a range of bytes in a specified blocksize from the  given
146              offset.   The  bytes written can be either a set pattern or read
147              in from another file before writing.
148                 -i  allows an input file to be specified as the source of the
149                     data to be written.
150                 -d  causes direct I/O, rather than the usual buffered I/O, to
151                     be used when reading the input file.
152                 -w  call fdatasync(2) once all writes are complete  (included
153                     in timing results)
154                 -N  Perform the pwritev2(2) call with RWF_NOWAIT.
155                 -D  Perform the pwritev2(2) call with RWF_DSYNC.
156                 -O  perform  pwrite once and return the (maybe partial) bytes
157                     written.
158                 -W  call fsync(2) once all writes are complete  (included  in
159                     timing results)
160                 -s  specifies  the  number of bytes to skip from the start of
161                     the input file before starting to read.
162                 -b  used  to  set  the  blocksize  into  which  the  write(2)
163                     requests  will  be  split.  The default blocksize is 4096
164                     bytes.
165                 -S  used to set the (repeated) fill  pattern  which  is  used
166                     when  the  data  to write is not coming from a file.  The
167                     default buffer fill pattern value is 0xcdcdcdcd.
168                 -F  write the buffers in a forwards sequential direction.
169                 -B  write the buffers in a reserve sequential direction.
170                 -R  write the buffers in the give range in a random order.
171                 -Z seed
172                     specify the random number seed used for random write
173                 -V vectors
174                     Use the vectored IO write syscall pwritev(2) with a  num‐
175                     ber  of  blocksize length iovecs. The number of iovecs is
176                     set by the vectors parameter.
177
178       w      See the pwrite command.
179
180       bmap [ -adelpv ] [ -n nx ]
181              Prints the block mapping for the current open file. Refer to the
182              xfs_bmap(8) manual page for complete documentation.
183
184       fiemap [ -alv ] [ -n nx ] [ offset [ len ]]
185              Prints  the  block  mapping  for the current open file using the
186              fiemap ioctl.  Options behave as described  in  the  xfs_bmap(8)
187              manual page.
188
189              Optionally,  this command also supports passing the start offset
190              from where to begin the mapping and the length of  that  region.
191              The kernel will return any full extents which intersect with the
192              requested range, and the fiemap command will print them in their
193              entirety.   If  the  requested  range  starts or ends in a hole,
194              fiemap will print the hole, truncated to the requested range.
195
196       fsmap [ -d | -l | -r ] [ -m | -v ] [ -n nx ] [ start ] [ end ]
197              Prints the mapping of disk blocks used by the filesystem hosting
198              the  current  file.   The  map  lists each extent used by files,
199              allocation group metadata, journalling logs, and static filesys‐
200              tem metadata, as well as any regions that are unused.  Each line
201              of the listings takes the following form:
202
203              extent:  major:minor  [startblock..endblock]:  owner   startoff‐
204              set..endoffset length
205
206              Static  filesystem  metadata, allocation group metadata, btrees,
207              journalling logs, and free space are  marked  by  replacing  the
208              startoffset..endoffset with the appropriate marker.  All blocks,
209              offsets, and lengths are specified in units of 512-byte  blocks,
210              no  matter  what  the  filesystem's block size is.  The optional
211              start and end arguments can be used to constrain the output to a
212              particular range of disk blocks.  If these two options are spec‐
213              ified, exactly one of -d, -l, or -r must also be set.
214                 -d     Display only  extents  from  the  data  device.   This
215                        option only applies for XFS filesystems.
216                 -l     Display  only  extents  from  the external log device.
217                        This option only applies to XFS filesystems.
218                 -r     Display only extents from the realtime  device.   This
219                        option only applies to XFS filesystems.
220                 -m     Display  results  in  a machine readable format (CSV).
221                        This option is not compatible with the -v  flag.   The
222                        columns  of  the  output  are:  extent  number, device
223                        major, device minor,  physical  start,  physical  end,
224                        owner,  offset  start, offset end, length.  The start,
225                        end, and length numbers are provided in units of 512b.
226                        The  owner  field  is  a special string that takes the
227                        form:
228
229                           inode_%lld_data
230                               for inode data.
231                           inode_%lld_data_bmbt
232                               for inode data extent maps.
233                           inode_%lld_attr
234                               for inode extended attribute data.
235                           inode_%lld_attr_bmbt
236                               for inode extended attribute extent maps.
237                           special_%u:%u
238                               for other filesystem metadata.
239
240
241                 -n num_extents
242                        If this option is given, fsmap obtains the extent list
243                        of  the file in groups of num_extents extents.  In the
244                        absence of -n, fsmap queries the system for extents in
245                        groups of 131,072 records.
246
247                 -v     Shows  verbose  information.  When this flag is speci‐
248                        fied, additional AG specific information  is  appended
249                        to each line in the following form:
250
251                             agno (startagblock..endagblock) nblocks flags
252
253                        A  second  -v  option will print out the flags legend.
254                        This option is not compatible with the -m flag.
255
256       extsize [ -R | -D ] [ value ]
257              Display and/or modify the preferred extent size used when  allo‐
258              cating  space  for  the currently open file. If the -R option is
259              specified, a recursive descent is performed  for  all  directory
260              entries  below  the  currently  open  file  (-D  can  be used to
261              restrict the output to directories only).  If the target file is
262              a  directory,  then  the  inherited  extent size is set for that
263              directory (new files created  in  that  directory  inherit  that
264              extent  size).  The value should be specified in bytes, or using
265              one of the usual units suffixes (k, m, g, b,  etc).  The  extent
266              size is always reported in units of bytes.
267
268       cowextsize [ -R | -D ] [ value ]
269              Display  and/or  modify  the preferred copy-on-write extent size
270              used when allocating space for the currently open file.  If  the
271              -R option is specified, a recursive descent is performed for all
272              directory entries below the currently open file (-D can be  used
273              to restrict the output to directories only).  If the target file
274              is a directory, then the inherited CoW extent size  is  set  for
275              that directory (new files created in that directory inherit that
276              CoW extent size).  The value should be specified  in  bytes,  or
277              using  one  of  the  usual units suffixes (k, m, g, b, etc). The
278              extent size is always reported in units of bytes.
279
280       allocsp size 0
281              Sets the size of the file to  size  and  zeroes  any  additional
282              space  allocated using the XFS_IOC_ALLOCSP/XFS_IOC_FREESP system
283              call described in the xfsctl(3) manual page.  allocsp and freesp
284              do exactly the same thing.
285
286       freesp size 0
287              See the allocsp command.
288
289       fadvise [ -r | -s | [[ -d | -n | -w ] offset length ]]
290              On platforms which support it, allows hints be given to the sys‐
291              tem regarding the expected I/O patterns on the file.  The  range
292              arguments  are required by some advise commands ([*] below), and
293              the others must have no range arguments.  With no arguments, the
294              POSIX_FADV_NORMAL advice is implied (default readahead).
295                 -d  the  data  will  not be accessed again in the near future
296                     (POSIX_FADV_DONTNEED[*]).
297                 -n  data  will  be  accessed   once   and   not   be   reused
298                     (POSIX_FADV_NOREUSE[*]).
299                 -r  expect  access  to  data in random order (POSIX_FADV_RAN‐
300                     DOM), which sets readahead to zero.
301                 -s  expect   access   to    data    in    sequential    order
302                     (POSIX_FADV_SEQUENTIAL), which doubles the default reada‐
303                     head on the file.
304                 -w  advises  the  specified  data  will   be   needed   again
305                     (POSIX_FADV_WILLNEED[*])  which forces the maximum reada‐
306                     head.
307
308       fdatasync
309              Calls fdatasync(2) to flush the file's in-core data to disk.
310
311       fsync  Calls fsync(2) to flush all in-core file state to disk.
312
313       s      See the fsync command.
314
315       sync_range [ -a | -b | -w ] offset length
316              On platforms which support it, allows control of syncing a range
317              of  the  file to disk. With no options, SYNC_FILE_RANGE_WRITE is
318              implied on the range supplied.
319                 -a  wait for IO in the given range to  finish  after  writing
320                     (SYNC_FILE_RANGE_WAIT_AFTER).
321                 -b  wait  for  IO in the given range to finish before writing
322                     (SYNC_FILE_RANGE_WAIT_BEFORE).
323                 -w  start  writeback  of  dirty  data  in  the  given   range
324                     (SYNC_FILE_RANGE_WRITE).
325
326       sync   Calls sync(2) to flush all filesystems' in-core data to disk.
327
328       syncfs Calls syncfs(2) to flush this filesystem's in-core data to disk.
329
330       resvsp offset length
331              Allocates reserved, unwritten space for part of a file using the
332              XFS_IOC_RESVSP system call described  in  the  xfsctl(3)  manual
333              page.
334
335       unresvsp offset length
336              Frees   reserved   space   for   part   of   a  file  using  the
337              XFS_IOC_UNRESVSP system call described in the  xfsctl(3)  manual
338              page.
339
340       falloc [ -k ] offset length
341              Allocates reserved, unwritten space for part of a file using the
342              fallocate routine as described in the fallocate(2) manual page.
343                 -k  will set the FALLOC_FL_KEEP_SIZE  flag  as  described  in
344                     fallocate(2).
345
346       fcollapse offset length
347              Call  fallocate  with FALLOC_FL_COLLAPSE_RANGE flag as described
348              in the fallocate(2) manual page to de-allocates blocks and elim‐
349              inates  the hole created in this process by shifting data blocks
350              into the hole.
351
352       finsert offset length
353              Call fallocate with FALLOC_FL_INSERT_RANGE flag as described  in
354              the fallocate(2) manual page to create the hole by shifting data
355              blocks.
356
357       fpunch offset length
358              Punches (de-allocates) blocks in the file by  calling  fallocate
359              with  the  FALLOC_FL_PUNCH_HOLE  flag as described in the fallo‐
360              cate(2) manual page.
361
362       funshare offset length
363              Call fallocate with FALLOC_FL_UNSHARE_RANGE flag as described in
364              the fallocate(2) manual page to unshare all shared blocks within
365              the range.
366
367       fzero offset length
368              Call fallocate with FALLOC_FL_ZERO_RANGE flag  as  described  in
369              the  fallocate(2) manual page to allocate and zero blocks within
370              the range.
371
372       zero offset length
373              Call  xfsctl  with  XFS_IOC_ZERO_RANGE  as  described   in   the
374              xfsctl(3)  manual  page  to  allocate and zero blocks within the
375              range.
376
377       truncate offset
378              Truncates the current file at  the  given  offset  using  ftrun‐
379              cate(2).
380
381       sendfile -i srcfile | -f N [ offset length ]
382              On  platforms  which  support it, allows a direct in-kernel copy
383              between two file descriptors. The current open file is the  tar‐
384              get,  the  source must be specified as another open file (-f) or
385              by path (-i).
386
387       readdir [ -v ] [ -o offset ] [ -l length ]
388              Read a range of directory entries  from  a  given  offset  of  a
389              directory.
390                 -v  verbose  mode  -  dump dirent content as defined in read‐
391                     dir(3)
392                 -o  specify starting offset
393                 -l  specify total length to read (in bytes)
394
395       seek  -a | -d | -h [ -r ] [ -s ] offset
396              On platforms that support the lseek(2) SEEK_DATA  and  SEEK_HOLE
397              options, display the offsets of the specified segments.
398                 -a  Display both data and hole segments starting at the spec‐
399                     ified offset.
400                 -d  Display the data segment starting at the  specified  off‐
401                     set.
402                 -h  Display  the  hole segment starting at the specified off‐
403                     set.
404                 -r  Recursively display all the specified  segments  starting
405                     at the specified offset.
406                 -s  Display the starting lseek(2) offset. This offset will be
407                     a calculated value when both data and holes are displayed
408                     together or performing a recusively display.
409
410       reflink  [ -C ] [ -q ] src_file [src_offset dst_offset length]
411              On    filesystems    that    support    the    FICLONERANGE   or
412              BTRFS_IOC_CLONE_RANGE  ioctls,  map  length  bytes   at   offset
413              dst_offset in the open file to the same physical blocks that are
414              mapped at offset src_offset in the file src_file , replacing any
415              contents  that may already have been there.  If a program writes
416              into a reflinked block range of either file,  the  dirty  blocks
417              will  be  cloned,  written to, and remapped ("copy on write") in
418              the affected file, leaving  the  other  file(s)  unchanged.   If
419              src_offset,  dst_offset, and length are omitted, all contents of
420              src_file will be reflinked into the open file.
421                 -C  Print timing statistics in a condensed format.
422                 -q  Do not print timing statistics at all.
423
424       dedupe  [ -C ] [ -q ] src_file src_offset dst_offset length
425              On   filesystems   that    support    the    FIDEDUPERANGE    or
426              BTRFS_IOC_FILE_EXTENT_SAME  ioctls,  map  length bytes at offset
427              dst_offset in the open file to the same physical blocks that are
428              mapped  at  offset src_offset in the file src_file , but only if
429              the contents of both ranges are identical.   This  is  known  as
430              block-based deduplication.  If a program writes into a reflinked
431              block range of either file, the dirty  blocks  will  be  cloned,
432              written to, and remapped ("copy on write") in the affected file,
433              leaving the other file(s) unchanged.
434                 -C  Print timing statistics in a condensed format.
435                 -q  Do not print timing statistics at all.
436
437       copy_range [ -s src_offset ] [ -d dst_offset ] [ -l length ] src_file
438              On filesystems that support the copy_file_range(2) system  call,
439              copies  data  from the src_file into the open file.  If src_off‐
440              set, dst_offset, and length are omitted the contents of src_file
441              will  be  copied  to the beginning of the open file, overwriting
442              any data already there.
443                 -s  Copy data from src_file beginning from src_offset.
444                 -d  Copy data into the open file beginning at dst_offset.
445                 -l  Copy up to length bytes of data.
446
447       utimes atime_sec atime_nsec mtime_sec mtime_nsec
448              The utimes command changes the atime and mtime  of  the  current
449              file.   sec  uses  UNIX  timestamp  notation  and is the seconds
450              elapsed since 1970-01-01 00:00:00 UTC.  nsec is the  nanoseconds
451              since  the  sec. This value needs to be in the range 0-999999999
452              with UTIME_NOW and  UTIME_OMIT  being  exceptions.   Each  (sec,
453              nsec) pair constitutes a single timestamp value.
454
455       swapext donor_file
456              Swaps  extent  forks between files. The current open file is the
457              target. The donor file is specified by path. Note that file data
458              is not copied (file content moves with the fork(s)).
459
460

MEMORY MAPPED I/O COMMANDS

462       mmap [ N | [[ -rwxS ] [-s size ] offset length ]]
463              With no arguments, mmap shows the current mappings. Specifying a
464              single numeric argument N sets the current mapping. If two argu‐
465              ments  are specified (a range specified by offset and length), a
466              new mapping is created spanning the range,  and  the  protection
467              mode can be given as a combination of PROT_READ (-r), PROT_WRITE
468              (-w), and PROT_EXEC (-x).  The mapping will be created with  the
469              MAP_SHARED flag by default, or with the Linux specific (MAP_SYNC
470              | MAP_SHARED_VALIDATE) flags if -S is given.  -s size is used to
471              do  a  mmap(size)  &&  munmap(size)  operation  at first, try to
472              reserve some extendible free memory space,  if  size  is  bigger
473              than length parameter. But there's not guarantee that the memory
474              after length ( up to size ) will stay free.  e.g.  "mmap -rw  -s
475              8192  1024"  will mmap 0 ~ 1024 bytes memory, but try to reserve
476              1024 ~ 8192 free space(no guarantee). This free space will help‐
477              ful for "mremap 8192" without MREMAP_MAYMOVE flag.
478
479       mm     See the mmap command.
480
481       mremap [ -f <new_address> ] [ -m ] new_length
482              Changes  the  current  mapping  size to new_length.  Whether the
483              mapping  may  be  moved  is  controlled  by  the  flags  passed;
484              MREMAP_FIXED (-f), or MREMAP_MAYMOVE (-m).  new_length specifies
485              a page-aligned address to which the mapping must  be  moved.  It
486              can be set to 139946004389888, 4096k or 1g etc.
487
488       mrm    See the mremap command.
489
490       munmap Unmaps the current memory mapping.
491
492       mu     See the munmap command.
493
494       mread [ -f | -v ] [ -r ] [ offset length ]
495              Accesses  a  segment  of  the current memory mapping, optionally
496              dumping it to the standard output stream (with -v or -f  option)
497              for inspection. The accesses are performed sequentially from the
498              start offset by default, but can also be done from the end back‐
499              wards  through  the  mapping if the -r option in specified.  The
500              two verbose modes differ only in the relative offsets they  dis‐
501              play,  the -f option is relative to file start, whereas -v shows
502              offsets relative to the start of the mapping.
503
504       mr     See the mread command.
505
506       mwrite [ -r ] [ -S seed ] [ offset length ]
507              Stores a byte into memory for a range  within  a  mapping.   The
508              default  stored  value is 'X', repeated to fill the range speci‐
509              fied, but this can be changed using the -S option.   The  memory
510              stores  are  performed  sequentially  from  the  start offset by
511              default, but can also be done from the end backwards through the
512              mapping if the -r option in specified.
513
514       mw     See the mwrite command.
515
516       msync [ -i ] [ -a | -s ] [ offset length ]
517              Writes all modified copies of pages over the specified range (or
518              entire mapping if no range specified) to their  backing  storage
519              locations.  Also, optionally invalidates (-i) so that subsequent
520              references to the pages will  be  obtained  from  their  backing
521              storage  locations (instead of cached copies).  The flush can be
522              done synchronously (-s) or asynchronously (-a).
523
524       ms     See the msync command.
525
526       madvise [ -d | -r | -s | -w ] [ offset length ]
527              Modifies page cache behavior when operating on the current  map‐
528              ping.   The range arguments are required by some advise commands
529              ([*] below).  With no arguments, the POSIX_MADV_NORMAL advice is
530              implied (default readahead).
531                 -d  the pages will not be needed (POSIX_MADV_DONTNEED[*]).
532                 -r  expect  random page references (POSIX_MADV_RANDOM), which
533                     sets readahead to zero.
534                 -s  expect  sequential  page  references  (POSIX_MADV_SEQUEN‐
535                     TIAL), which doubles the default readahead on the file.
536                 -w  advises   the   specified  pages  will  be  needed  again
537                     (POSIX_MADV_WILLNEED[*]) which forces the maximum  reada‐
538                     head.
539
540       mincore
541              Dumps  a  list of pages or ranges of pages that are currently in
542              core, for the current memory mapping.
543
544

OTHER COMMANDS

546       help [ command ]
547              Display a brief description of one or all commands.
548
549       print  Display a list of all open files and memory mapped regions.  The
550              current  file  and  current mapping are distinguishable from any
551              others.
552
553       p      See the print command.
554
555       quit   Exit xfs_io.
556
557       q      See the quit command.
558
559       lsattr [ -R | -D | -a | -v ]
560              List extended inode flags on the currently open file. If the  -R
561              option  is  specified,  a recursive descent is performed for all
562              directory entries below the currently open file (-D can be  used
563              to  restrict  the  output to directories only).  This is a depth
564              first descent, it does not follow symlinks and it also does  not
565              cross mount points.
566
567       chattr [ -R | -D ] [ +/-riasAdtPneEfSxC ]
568              Change  extended  inode flags on the currently open file. The -R
569              and -D options have the  same  meaning  as  above.  The  mapping
570              between  each letter and the inode flags (refer to xfsctl(3) for
571              the full list) is available via the help command.
572
573       freeze Suspend all write I/O requests to the filesystem of the  current
574              file.  Only available in expert mode and requires privileges.
575
576       thaw   Undo  the effects of a filesystem freeze operation.  Only avail‐
577              able in expert mode and requires privileges.
578
579       flink path
580              Link the currently open  file  descriptor  into  the  filesystem
581              namespace.
582
583       inject [ tag ]
584              Inject  errors  into a filesystem to observe filesystem behavior
585              at specific points under adverse  conditions.  Without  the  tag
586              argument,  displays  the  list  of  error  tags available.  Only
587              available in expert mode and requires privileges.
588
589       resblks [ blocks ]
590              Get and/or set count of reserved  filesystem  blocks  using  the
591              XFS_IOC_GET_RESBLKS  or  XFS_IOC_SET_RESBLKS system calls.  Note
592              -- this can be useful for  exercising  out  of  space  behavior.
593              Only available in expert mode and requires privileges.
594
595       shutdown [ -f ]
596              Force  the  filesystem  to shut down, preventing any further IO.
597              XFS and other filesystems implement this functionality, although
598              implementation  details  may differ slightly.  Only available in
599              expert mode and requires privileges.
600
601              By default, the filesystem will not attempt to  flush  completed
602              transactions  to disk before shutting down the filesystem.  This
603              simulates a disk failure or crash.
604                 -f  Force the filesystem to flush all completed  transactions
605                     to  disk before shutting down, matching XFS behavior when
606                     critical corruption is encountered.
607
608       stat [ -v|-r ]
609              Selected statistics from stat(2) and the XFS_IOC_GETXATTR system
610              call  on  the  current  file. If the -v option is specified, the
611              atime (last  access),  mtime  (last  modify),  and  ctime  (last
612              change)  timestamps are also displayed.  The -r option dumps raw
613              fields from the stat structure.
614
615       statx [ -v|-r ][ -m basic | -m all | -m <mask> ][ -FD ]
616              Selected statistics from stat(2) and the XFS_IOC_GETXATTR system
617              call on the current file.
618                 -v  Show timestamps.
619                 -r  Dump raw statx structure values.
620                 -m basic
621                     Set    the   field   mask   for   the   statx   call   to
622                     STATX_BASIC_STATS.
623                 -m all
624                     Set the the field mask for the statx  call  to  STATX_ALL
625                     (default).
626                 -m <mask>
627                     Specify a numeric field mask for the statx call.
628                 -F  Force the attributes to be synced with the server.
629                 -D  Don't sync attributes with the server.
630
631       statfs Selected  statistics  from  statfs(2) and the XFS_IOC_FSGEOMETRY
632              system call on the filesystem where the current file resides.
633
634       chproj [ -R|-D ]
635              Modifies the project  identifier  associated  with  the  current
636              path. The -R option will recursively descend if the current path
637              is a directory. The -D option  will  also  recursively  descend,
638              only  setting  modifying  projects  on  subdirectories.  See the
639              xfs_quota(8) manual page  for  more  information  about  project
640              identifiers.
641
642       lsproj [ -R|-D ]
643              Displays  the  project  identifier  associated  with the current
644              path. The -R and  -D  options  behave  as  described  above,  in
645              chproj.
646
647       parent [ -cpv ]
648              By  default  this  command  prints out the parent inode numbers,
649              inode generation numbers and  basenames  of  all  the  hardlinks
650              which point to the inode of the current file.
651                 -p  the  output is similar to the default output except path‐
652                     names up to the mount-point are printed  out  instead  of
653                     the component name.
654                 -c  the   file's   filesystem   will  check  all  the  parent
655                     attributes for consistency.
656                 -v  verbose output will be printed.
657              [NOTE: Not currently operational on Linux.]
658
659       inode  [ [ -n ] number ] [ -v ]
660              The inode command queries physical information about  an  inode.
661              With  no arguments, it will return 1 or 0, indicating whether or
662              not any inode numbers greater than 32 bits are currently in  use
663              in the filesystem.  If given an inode number as an argument, the
664              command will return the same inode number if it is in use, or  0
665              if  not.  With -n number , the next used inode number after this
666              number will be returned, or zero if the supplied inode number is
667              the highest one in use. With -v the command will also report the
668              number of bits (32 or 64) used by the inode  number  printed  in
669              the  result;  if  no  inode  number was specified on the command
670              line, the maximum possible inode number in the  system  will  be
671              printed along with its size.
672
673       set_encpolicy  [  -c  mode  ] [ -n mode ] [ -f flags ] [ -v version ] [
674       keydesc ]
675              On filesystems that support  encryption,  assign  an  encryption
676              policy  to  the  current  file.  keydesc is a 16-byte hex string
677              which identifies the encryption key to use.  If not specified, a
678              "default" key descriptor of all 0's will be used.
679                 -c mode
680                     contents encryption mode (e.g. AES-256-XTS)
681                 -n mode
682                     filenames encryption mode (e.g. AES-256-CTS)
683                 -f flags
684                     policy flags (numeric)
685                 -v version
686                     version of policy structure (numeric)
687
688       get_encpolicy
689              On  filesystems  that support encryption, display the encryption
690              policy of the current file.
691
692       scrub type [ agnumber | ino gen ]
693              Scrub internal XFS  filesystem  metadata.   The  type  parameter
694              specifies which type of metadata to scrub.  For AG metadata, one
695              AG number must be specified.  For file metadata,  the  scrub  is
696              applied  to the open file unless the inode number and generation
697              number are specified.
698
699       repair type [ agnumber | ino gen ]
700              Repair internal XFS filesystem  metadata.   The  type  parameter
701              specifies  which  type  of metadata to repair.  For AG metadata,
702              one AG number must be specified.  For file metadata, the  repair
703              is  applied to the open file unless the inode number and genera‐
704              tion number are specified.
705
706       log_writes -d device -m mark
707              Create a mark named mark in the dm-log-writes log  specified  by
708              device.  This is intended to be equivalent to the shell command:
709
710              dmsetup message device 0 mark mark
711
712       lw     See the log_writes command.
713
714       label [ -c | -s label ]
715              On filesystems that support online label manipulation, get, set,
716              or clear the filesystem label.  With no options, print the  cur‐
717              rent  filesystem  label.   The  -c  option clears the filesystem
718              label by setting it to the null string.   The  -s  label  option
719              sets the filesystem label to label.  If the label is longer than
720              the filesystem will accept, xfs_io will print an error  message.
721              XFS filesystem labels can be at most 12 characters long.
722
723       crc32cselftest
724              Test  the  internal  crc32c  implementation to make sure that it
725              computes results correctly.
726

SEE ALSO

728       mkfs.xfs(8), xfsctl(3), xfs_bmap(8), xfs_db(8),  xfs(5),  fdatasync(2),
729       fstat(2),  fstatfs(2),  fsync(2),  ftruncate(2),  futimens(3), mmap(2),
730       msync(2), open(2), pread(2), pwrite(2), readdir(3), dmsetup(8).
731
732
733
734                                                                     xfs_io(8)
Impressum