NAME
xfs_check - check XFS filesystem consistency
SYNOPSIS
xfs_check [ -i ino ] ... [ -b bno ] ... [ -f ] [ -s ] [ -v ] [ -l
logdev ] device
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 device 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 normally be unmounted or read-only
during the execution of xfs_check. Otherwise, spurious problems are
reported.
OPTIONS
-f Specifies that the filesystem image to be processed is stored in
a regular file at device (see the mkfs.xfs(8) -d file option).
This might happen if an image copy of a filesystem has been made
into an ordinary file.
-l logdev
Specifies the device where the filesystem’s external log
resides. Only for those filesystems which use an external log.
See the mkfs.xfs(8) -l option, and refer to xfs(5) for a
detailed description of the XFS log.
-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 the specified inode ino. For
instance, it can be used to locate all the blocks associated
with a given inode.
-b bno Specifies verbose behavior for the specific filesystem block at
bno. 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(8)) and file system blocks may be
accomplished using xfs_db(8)’s convert command.
Any output that is produced when xfs_check is not run in verbose mode
indicates 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 the filesystem, make a
new filesystem, then use xfsrestore(8) to restore the data onto the new
filesystem. Note that xfsdump may fail on a corrupt filesystem.
However, 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
If the filesystem is completely corrupt, a core dump might be produced
instead of the message
device 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 message
out of memory
is printed.
The following is a description of the most likely problems and the
associated messages. Most of the diagnostics produced 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 multiple inodes. This message
usually follows a message of the next type.
block a/b expected type unknown got y
The block is used multiple times (shared).
block a/b type unknown not expected
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 references 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).
xfs_check(8)