B.3. Manual Page of xfs_check
xfs_check(8) xfs_check(8)
NAME
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 argu-
ment, which should be the disk or volume device for the filesystem. Filesys-
tems 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.
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 struc-
tures 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 com-
mand.
Any non-verbose output from xfs_check means that the filesystem has an incon-
sistency. 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
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 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 alloca-
tion group a doesn't match the number of inodes counted in the alloca-
tion 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 alloca-
tion 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)