xfs_check - check XFS filesystem consistency


SYNOPSIS

       xfs_check [ -i ino ] ... [ -b bno ] ... [ -s ] [ -v ] xfs_special

       xfs_check -f [ -i ino ] ... [ -b bno ] ... [ -s ] [ -v ] file


DESCRIPTION

       xfs_check  checks whether an XFS filesystem is consistent.
       It is normally run only when there is  reason  to  believe
       that  the  filesystem  has  a  consistency  problem.   The
       filesystem to be checked is specified by  the  xfs_special
       argument,  which  should  be the disk or volume device for
       the filesystem.  Filesystems stored in files can  also  be
       checked,  using  the  -f flag.  The filesystem should nor­
       mally be unmounted or read-only during  the  execution  of
       xfs_check.  Otherwise, spurious problems are reported.

       The options to xfs_check are:

       -f       Specifies  that  the special device is actually a
                file (see the mkfs.xfs  -d  file  option).   This
                might happen if an image copy of a filesystem has
                been made into an ordinary file.

       -s       Specifies that  only  serious  errors  should  be
                reported.   Serious errors are those that make it
                impossible to find major data structures  in  the
                filesystem.   This option can be used to cut down
                the amount of output  when  there  is  a  serious
                problem,  when the output might make it difficult
                to see what the real problem is.

       -v       Specifies verbose output; it is  impossibly  long
                for  a  reasonably-sized filesystem.  This option
                is intended for internal use only.

       -i ino   Specifies verbose behavior for a specific  inode.
                For  instance,  it  can be used to locate all the
                blocks associated with a given inode.

       -b bno   Specifies  verbose  behavior   for   a   specific
                filesystem  block.   For instance, it can be used
                to determine what a specific block is  used  for.
                The block number is a "file system block number".
                Conversion between disk addresses (i.e. addresses
                reported  by xfs_bmap) and file system blocks may
                be accomplished using xfs_db's convert command.

       Any non-verbose  output  from  xfs_check  means  that  the
       filesystem  has  an  inconsistency.  The filesystem can be
       repaired using either xfs_repair(8) to fix the  filesystem
       in  place,  or by using xfsdump(8) and mkfs.xfs(8) to dump

       store(8)  to  restore  the  data  onto the new filesystem.
       Note that xfsdump may fail on a corrupt filesystem.   How­
       ever,  if the filesystem is mountable, xfsdump can be used
       to try  and  save  important  data  before  repairing  the
       filesystem  with  xfs_repair.   If  the  filesystem is not
       mountable though, xfs_repair is the only viable option.


DIAGNOSTICS

       Under one circumstance, xfs_check unfortunately might dump
       core rather than produce useful output.  If the filesystem
       is completely corrupt,  a  core  dump  might  be  produced
       instead of the message xxx is not a valid filesystem

       If  the  filesystem  is  very  large (has many files) then
       xfs_check might run out of memory.  In this case the  mes­
       sage out of memory is printed.

       The following is a description of the most likely problems
       and the associated messages.  Most of the diagnostics pro­
       duced  are  only  meaningful  with an understanding of the
       structure of the filesystem.

       agf_freeblks n, counted m in ag a
              The freeblocks count in the allocation group header
              for  allocation group a doesn't match the number of
              blocks counted free.

       agf_longest n, counted m in ag a
              The longest free extent  in  the  allocation  group
              header  for  allocation  group  a doesn't match the
              longest free extent found in the allocation  group.

       agi_count n, counted m in ag a
              The  allocated  inode count in the allocation group
              header for allocation group  a  doesn't  match  the
              number of inodes counted in the allocation group.

       agi_freecount n, counted m in ag a
              The free inode count in the allocation group header
              for allocation group a doesn't match the number  of
              inodes counted free in the allocation group.

       block a/b expected inum 0 got i
              The block number is specified as a pair (allocation
              group number, block in the allocation group).   The
              block is used multiple times (shared), between mul­
              tiple inodes.  This message usually follows a  mes­
              sage of the next type.

       block a/b expected type unknown got y
              The block is used multiple times (shared).

              The  block  is unaccounted for (not in the freelist
              and not in use).

       link count mismatch for inode nnn (name xxx), nlink m,
              counted n
              The  inode  has  a bad link count (number of refer­
              ences in directories).

       rtblock b expected inum 0 got i
              The block is used multiple times (shared),  between
              multiple  inodes.   This  message usually follows a
              message of the next type.

       rtblock b expected type unknown got y
              The  real-time  block  is   used   multiple   times
              (shared).

       rtblock b type unknown not expected
              The  real-time block is unaccounted for (not in the
              freelist and not in use).

       sb_fdblocks n, counted m
              The number of free  data  blocks  recorded  in  the
              superblock doesn't match the number counted free in
              the filesystem.

       sb_frextents n, counted m
              The number of free real-time  extents  recorded  in
              the  superblock  doesn't  match  the number counted
              free in the filesystem.

       sb_icount n, counted m
              The number of  allocated  inodes  recorded  in  the
              superblock  doesn't  match  the number allocated in
              the filesystem.

       sb_ifree n, counted m
              The  number  of  free  inodes   recorded   in   the
              superblock  doesn't  match  the  number free in the
              filesystem.


SEE ALSO

       mkfs.xfs(8),  xfsdump(8),  xfsrestore(8),   xfs_ncheck(8),
       xfs_repair(8), xfs(5).


Man(1) output converted with man2html