NAME
fsck.ocfs2.checks - Consistency checks that fsck.ocfs2(8) performs and its means for fixing inconsistencies.
DESCRIPTION
fsck.ocfs2(8) is used to check an OCFS2 file system. It performs many consistency checks and will offer to fix faults that it finds. This man page lists the problems it may find and describes their fixes. The problems are indexed by the error number that fsck.ocfs2(8) emits when it describes the problem and asks if it should be fixed.
The prompts are constructed such that answering ’no’ results in no changes to the file system. This may result in errors later on that stop fsck.ocfs2(8) from proceeding.
CHECKS
EB_BLKNO
Extent blocks contain a record of the disk block where they
are located. An extent block was found at a block that
didn’t match its recorded location.
Answering yes will update the data structure in the extent block to reflect its real location on disk.
EB_GEN
Extent blocks are created with a generation number to match
the generation number of the volume at the time of creation.
An extent block was found which contains a generation number
that doesn’t match.
Answering yes implies that the generation number is correct and that the extent block is from a previous file system. The extent block will be ignored and the file that contains it will lose the data it referenced.
EB_GEN_FIX
Extent blocks are created with a generation number to match
the generation number of the volume at the time of creation.
An extent block was found which contains a generation number
that doesn’t match.
Answering yes implies that the generation number in the extent block is incorrect and that the extent block is valid. The generation number in the block is updated to match the generation number in the volume.
EXTENT_MARKED_UNWRITTEN
An extent record has the UNWRITTEN flag set, but the
filesystem feature set does not include unwritten
extents.
Answering yes clears the UNWRITTEN flag. This is safe to do; as the feature is disabled anyway.
EXTENT_MARKED_REFCOUNTED
An extent record has the REFCOUNTED flag set, but neither
the filesystem nor the file has the REFCOUNTED flag set.
Answering yes clears the REFCOUNTED flag.
EXTENT_BLKNO_UNALIGNED
The block that marks the start of an extent should always
fall on the start of a cluster. An extent was found that
starts part-way into a cluster.
Answering yes moves the start of the extent back to the start of the addressed cluster. This may add data to the middle of the file that contains this extent.
EXTENT_CLUSTERS_OVERRUN
An extent was found which claims to contain clusters which
are beyond the end of the volume.
Answering yes clamps the extent to the end of the volume. This may result in a reduced file size for the file that contains the extent, but it couldn’t have addressed those final clusters anyway. One can imagine this problem arising if there are problems shrinking a volume.
EXTENT_EB_INVALID
Deep extent trees are built by forming a tree out of extent
blocks. An extent tree references an invalid extent
block.
Answering yes stops the tree from referencing the invalid extent block. This may truncate data from the file which contains the tree.
EXTENT_LIST_DEPTH
Extent lists contain a record of their depth in the tree. An
extent list was found whose recorded depth doesn’t
match the position they have in the tree.
Answering yes updates the depth field in the list to match the tree on disk.
EXTENT_LIST_COUNT
The number of entries in an extent list is bounded by either
the size of the inode or the size of the block which
contains it. An extent list was found which claims to have
more entries than would fit in its container.
Answering yes updates the count field in the extent list to match the container. Answering no to this question may stop further fixes from being done because the count value can not be trusted.
EXTENT_LIST_FREE
The number of free entries in an extent list must be less
than the total number of entries in the list. A list was
found which claims to have more free entries than possible
entries.
Answering yes sets the number of free entries in the list equal to the total possible entries.
EXTENT_BLKNO_RANGE
An extent record was found which references a block which
can not be referenced by an extent. The referenced block is
either very early in the volume, and thus reserved, or
beyond the end of the volume.
Answering yes removes this extent record from the tree. This may remove data from the file which owns the tree but any such data was inaccessible.
CHAIN_CPG
The bitmap inode indicates a different clusters per group
than the group descriptor. This value is typically static
and only modified by tunefs during volume resize and that
too only on volumes having only one cluster group.
Answering yes updates the clusters per group on the bitmap inode to the corresponding value in the group descriptor.
SUPERBLOCK_CLUSTERS
The super block indicates a different total clusters value
than the global bitmap. This is only possible due to a
failed volume resize operation.
Answering yes updates the total clusters in the super block to the value specified in the global bitmap.
FIXED_CHAIN_CLUSTERS
The global bitmap inode was repaired, resulting in a change
to the total cluster count of the filesystem.
Answering yes updates the total clusters in the super block to the value specified in the global bitmap.
GROUP_UNEXPECTED_DESC
The group descriptors that make up the global bitmap chain
allocator reside at predictable locations on disk. A group
descriptor was found in the global bitmap allocator which
isn’t at one of these locations and so shouldn’t
be in the allocator.
Answering yes removes this descriptor from the global bitmap allocator.
GROUP_EXPECTED_DESC
The group descriptors that make up the global bitmap chain
allocator reside at predictable locations on disk. A group
descriptor at one of these locations was not linked into the
global bitmap allocator.
Answering yes will relink this group into the allocator.
GROUP_GEN
A group descriptor was found with a generation number that
doesn’t match the generation number of the volume.
Answering yes sets the group descriptor’s generation equal to the generation number in the volume.
GROUP_PARENT
Group descriptors contain a pointer to the allocator inode
which contains the chain they belong to. A group descriptor
was found in an allocator inode that doesn’t match the
descriptor’s parent pointer.
Answering yes updates the group descriptor’s parent pointer to match the inode it resides in.
GROUP_DUPLICATE
Group descriptors contain a pointer to the allocator inode
which contains the chain they belong to. A group descriptor
was found in two allocator inodes so it may be
duplicated.
Answering yes removes the group descriptor from current allocator inode.
GROUP_BLKNO
Group descriptors have a field which records their block
location on disk. A group descriptor was found at a given
location but is recorded as being located somewhere
else.
Answering yes updates the group descriptor’s recorded location to match where it actually is found on disk.
GROUP_CHAIN
Group descriptors are found in a number of different
singly-linked chains in an allocator inode. A group
descriptor records the chain number that it is linked in. A
group descriptor was found whose chain field doesn’t
match the chain it was found in.
Answering yes sets the group descriptor’s chain field to match the chain it is found in.
GROUP_FREE_BITS
A group descriptor records the number of bits in its bitmap
that are free. A group descriptor was found which claims to
have more free bits than are valid in its bitmap.
Answering yes decreases the number of recorded free bits so that it equals the total number of bits in the group descriptor’s bitmap.
GROUP_CHAIN_LOOP
A chain may loop if the next field of the group descriptor
points to one of the previous group descriptors in the
chain. This causes the ocfs2 code, both user space and
kernel module to loop forever.
Answering yes breaks the loop at an optimum location so that all the existing group descriptors are in the chain. However, it cannot re-connect stray group descriptors and must rely on the rest of the fsck code to fix it.
CHAIN_COUNT
The chain list embedded in an inode is limited by the block
size and the number of bytes consumed by the rest of the
inode. A chain list header was found which claimed that
there are more entries in the list then could fit in the
inode.
Answering yes resets the header’s cl_count member to the maximum size allowed by the block size after accounting for the space consumed by the inode.
CHAIN_NEXT_FREE
This is identical to CHAIN_COUNT except that it is testing
and fixing the pointer to the next free list entry recorded
in the cl_next_free_rec member instead of the total number
of entries.
CHAIN_EMPTY
Chain entries need to be packed such that there are no
chains without descriptors found before the chain that is
marked as free by the chain header. A chain without
descriptors was found found before that chain that was
marked free.
Answering yes will remove the unused chain and shift the remaining chains forward in the list.
CHAIN_I_CLUSTERS
Chain allocator inodes have an i_clusters value that
represents the number of clusters used by the allocator. An
inode was found whose i_clusters value doesn’t match
the number of clusters its chains cover.
Answering yes updates i_clusters in the inode to reflect what was actually found by walking the chain.
CHAIN_I_SIZE
Chain allocator inodes multiply the number of bytes per
cluster by the their i_clusters value and store it in
i_size. An inode was found which didn’t have the
correct value in its i_size.
Answering yes updates i_size to be the product of i_clusters and the cluster size. Nothing else uses this value, and previous versions of tools didn’t calculate it properly, so don’t be too worried if this error appears.
CHAIN_GROUP_BITS
The inode that contains an embedded chain list has fields
which record the total number of bits covered by the chain
as well as the amount free. These fields didn’t match
what was found in the chain.
Answering yes updates the fields in the inode to reflect what was actually found by walking the chain.
CHAIN_HEAD_LINK_RANGE
The header that starts a chain tried to reference a group
descriptor at a block number that couldn’t be
valid.
Answering yes will clear the reference to this invalid block and truncate the chain that it started.
CHAIN_LINK_GEN
A reference was made to a group descriptor whose generation
number doesn’t match the generation of the volume.
Answering yes to this question implies that the group descriptor is invalid and the chain is truncated at the point that it referred to this invalid group descriptor. Answering no to this question considers the group descriptor as valid and its generation may be fixed.
CHAIN_LINK_MAGIC
Chains are built by chain headers and group descriptors
which are linked together by block references. A reference
was made to a group descriptor at a given block but a valid
group descriptor signature wasn’t found at that
block.
Answering yes clears the reference to this invalid block and truncates the chain at the point of the reference.
CHAIN_LINK_RANGE
Chains are built by chain headers and group descriptors
which are linked together by block references. A reference a
block was found which can’t possibly be valid because
it was either too small or extended beyond the volume.
Answering yes truncates the chain in question by zeroing the invalid block reference. This shortens the chain in question and could result in more fixes later if the part of the chain that couldn’t be referenced was valid at some point.
CHAIN_BITS
A chain’s header contains members which record the
total number of bits in the chain as well as the number of
bits that are free. After walking through a chain it was
found that the number of bits recorded in its header
don’t match what was found by totalling up the group
descriptors.
Answering yes updates the c_total and c_free members of the header to reflect what was found in the group descriptors in the chain.
DISCONTIG_BG_DEPTH
A discontiguous block group has an extent list which records
all the clusters allocated to it. Discontiguous block groups
only support extent lists with a tree depth of 0. A block
group claims to have a tree depth greater than 0.
Answering yes will set the tree depth of the extent list to 0.
DISCONTIG_BG_COUNT
A discontiguous block group has an extent list which records
all the clusters allocated to it. A block group claims to
have more records than can actually fit.
Answering yes will set the record count to the maximum possible.
DISCONTIG_BG_REC_RANGE
Block groups set aside clusters to be used for metadata. A
discontiguous block group claims to contain clusters beyond
the end of the volume.
Answering yes will remove the block group.
DISCONTIG_BG_CORRUPT_LEAVES
A discontiguous block group has an extent list which records
all the clusters allocated to it. A group has more than one
extent claiming to have an impossible number of
clusters.
Answering yes will remove the block group.
DISCONTIG_BG_CLUSTERS
Extent records in a discontiguous block group were found
having more clusters allocated then a block group can
have.
Answering yes will remove the block group.
DISCONTIG_BG_LESS_CLUSTERS
Extent records in a discontiguous block group were found
having less clusters allocated then a block group can
have.
Answering yes will remove the block group.
DISCONTIG_BG_NEXT_FREE_REC
A discontiguous block group has an extent list which records
all the clusters allocated to it. A group was found with
fewer filled in extents than it claims to have. The filled
in extents describe a complete and correct group.
Answering yes will set the used extent count to the number of filled extents.
DISCONTIG_BG_LIST_CORRUPT
A discontiguous block group has an extent list which records
all the clusters allocated to it. The group claims to have
more extents than is possible, and the existing extents
contain errors.
Answering yes will remove the block group.
DISCONTIG_BG_REC_CORRUPT
A discontiguous block group has a extent list which records
all the clusters allocated to it. A group was found with one
extent claiming too many clusters but the sum of the
remaining extents are equal to the total clusters a group
must have.
Answering yes will remove the block group.
DISCONTIG_BG_LEAF_CLUSTERS
A discontiguous block group has a extent list which records
all the clusters allocated to it. A group was found with one
extent claiming too many clusters, but the remaining extents
are correct.
Answering yes will set the number of the clusters on the broken extent to the difference between the total clusters a group must have and the sum of the remaining extents.
INODE_ALLOC_REPAIR
The inode allocator did not accurately reflect the set of
inodes that are free and in use in the volume.
Answering yes will update the inode allocator bitmaps. Each bit that doesn’t match the state of its inode will be inverted.
INODE_SUBALLOC
Each inode records the node whose allocator is responsible
for the inode. An inode was found in a given node’s
allocator but the inode itself claimed to belong to a
different node.
Answering yes will correct the inode to point to the node’s allocator that it belongs to.
LALLOC_SIZE
Each node has a local allocator contained in a block that is
used to allocate clusters in batches. A node’s local
allocator claims to reflect more bytes than are possible for
the volume’s block size.
Answering yes decreases the local allocator’s size to reflect the volume’s block size.
LALLOC_NZ_USED
A given node’s local allocator isn’t in use but
it claims to have bits in use in its bitmap.
Answering yes zeros this used field.
LALLOC_NZ_BM
A given node’s local allocator isn’t in use but
it has a field which records the bitmap as starting at a
non-zero cluster offset.
Answering yes zeros the bm_off field.
LALLOC_BM_OVERRUN
Each local allocator contains a reference to the first
cluster that its bitmap addresses. A given local allocator
was found which references a starting cluster that is beyond
the end of the volume.
Answering yes resets the given local allocator. No allocated data will be lost.
LALLOC_BM_SIZE
The given local allocator claims to cover more bits than are
possible for the size in bytes of its bitmap.
Answering yes decreases the number of bits the allocator covers to reflect the size in bytes of the bitmap and resets the allocator. No allocated data will be lost.
LALLOC_BM_STRADDLE
The given local allocator claims to cover a region of
clusters which extents beyond the end of the volume.
Answering yes resets the given local allocator. No allocated data will be lost.
LALLOC_USED_OVERRUN
The given local allocator claims to have more bits in use
than it has total bits in its bitmap.
Answering yes decreases the number of bits used so that it equals the total number of available bits.
LALLOC_CLEAR
A local allocator inode was found to have problems. This
gives the operator a chance to just reset the local
allocator inode.
Answering yes clears the local allocator. No information is lost but the global bitmap allocator may need to be updated to reflect clusters that were reserved for the local allocator but were free.
DEALLOC_COUNT
The given truncate log inode contains a count that is
greater than the value that is possible given the size of
the inode.
Answering yes resets the count value to the possible maximum.
DEALLOC_USED
The given truncate log inode claims to have more records in
use than it is possible to store in the inode.
Answering yes resets the record of the number used to the maximum value possible.
TRUNCATE_REC_START_RANGE
A truncate record was found which claims to start at a
cluster that is beyond the number of clusters in the
volume.
Answering yes will clear the truncate record. This may result in previously freed space being marked as allocated. This will be fixed up later as the allocator is updated to match what is used by the file system.
TRUNCATE_REC_WRAP
Clusters are recorded as 32bit values. A truncate record was
found which claims to have enough clusters to cause this
value to wrap. This could never be the case and is a sure
sign of corruption.
Answering yes will clear the truncate record. This may result in previously freed space being marked as allocated. This will be fixed up later as the allocator is updated to match what is used by the file system.
TRUNCATE_REC_RANGE
A truncate record was found which claims to reference a
region of clusters which partially extends beyond the number
of clusters in the volume.
Answering yes will clear the truncate record. This may result in previously freed space being marked as allocated. This will be fixed up later as the allocator is updated to match what is used by the file system.
INODE_GEN
Inodes are created with a generation number to match the
generation number of the volume at the time of creation. An
Inode was found which contains a generation number that
doesn’t match.
Answering yes implies that the generation number is correct and that the inode is from a previous file system. The inode will be recorded as free.
INODE_GEN_FIX
Inodes are created with a generation number to match the
generation number of the volume at the time of creation. An
inode was found which contains a generation number that
doesn’t match.
Answering yes implies that the generation number in the inode is incorrect and that the inode is valid. The generation number in the inode is updated to match the generation number in the volume.
INODE_BLKNO
Inodes contain a field that must match the block that they
reside in. An inode was found at a block that doesn’t
match the field in the inode.
Answering yes updates the field to match the inode’s position on disk.
ROOT_NOTDIR
The super block contains a reference to the inode that
contains the root directory. This block was found to contain
an inode that isn’t a directory.
Answering yes clears this inode. The operator will be asked to recreate the root directory at a point in the near future.
INODE_NZ_DTIME
Inodes contain a field describing the time at which they
were deleted. This can not be set for an inode that is still
in use. An inode was found which is in use but which
contains a non-zero dtime.
Answering yes implies that the inode is still valid and resets its dtime to zero.
LINK_FAST_DATA
The target name for a symbolic link is stored either as file
contents for that inode or in the inode structure itself on
disk. Only small destination names are stored in the inode
structure. The i_blocks field of the inode indicates that
the name is stored in the inode when it is zero. An inode
was found that has both i_blocks set to zero and file
contents.
Answering yes clears the inode and so deletes the link.
LINK_NULLTERM
The targets of links on disk must be null terminated. A link
was found whose target wasn’t null terminated.
Answering yes clears the inode and so deletes the link.
LINK_SIZE
The size of a link on disk must match the length of its
target string. A link was found whose size does not.
Answering yes updates the link’s size to reflect the length of its target string.
LINK_BLOCKS
Links can not be sparse. There must be exactly as many
blocks allocated as are needed to cover its size. A link was
found which doesn’t have enough blocks allocated to
cover its size.
Answering yes clears the link’s inode thus deleting the link.
DIR_ZERO
Directories must at least contain a block that has the
"." and ".." entries. A directory was
found which doesn’t contain any blocks.
Answering yes to this question clears the directory’s inode thus deleting the directory.
INODE_SIZE
Certain inodes record the size of the data they reference in
an i_size field. This can be the number of bytes in a file,
directory, or symlink target which are stored in data mapped
by extents of clusters. This error occurs when the extent
lists are walked and the amount of data found does not match
what is stored in i_size.
Answering yes to this question updates the inode’s i_size to match the amount of data referenced by the extent lists. It is vitally important that i_size matches the extent lists and so answering yes is strongly encouraged.
INODE_SPARSE_SIZE
Certain inodes record the size of the data they reference in
an i_size field. This can be the number of bytes in a file,
directory, or symlink target which are stored in data mapped
by extents of clusters. This error occurs when a sparse
inode was found that had data allocated past its i_size.
Answering yes to this question will update the inode’s i_size to cover all of its allocated storage. It is vitally important that i_size matches the extent lists and so answering yes is strongly encouraged.
INODE_INLINE_SIZE
Inodes can only fit a certain amount of inline data. This
inode has its data inline but claims an i_size larger than
will actually fit.
Answering yes to this question updates the inode’s i_size to the maximum available inline space.
INODE_CLUSTERS
Inodes contain a record of how many clusters are allocated
to them. An inode was found whose recorded number of
clusters doesn’t match the number of blocks that were
found associated with the inode.
Answering yes resets the inode’s number of clusters to reflect the number of blocks that were associated with the file.
INODE_SPARSE_CLUSTERS
Inodes contain a record of how many clusters are allocated
to them. An sparse inode was found whose recorded number of
clusters doesn’t match the number of blocks that were
found associated with the inode.
Answering yes resets the inode’s number of clusters to reflect the number of blocks that were associated with the file.
INODE_INLINE_CLUSTERS
Inlined inode should not have allocated clusters. An inode
who has inline data flag set was found with clusters
allocated.
Answering yes resets the inode’s number of clusters to zero.
LALLOC_REPAIR
An active local allocator did not accurately reflect the set
of clusters that are free and in use in its region.
Answering yes will update the local allocator bitmap. Each bit that doesn’t match the use of its cluster will be inverted.
LALLOC_USED
A local allocator records the number of bits that are used
in its bitmap. An allocator was found whose used value
doesn’t reflect the number of bits that are set in its
bitmap.
Answering yes sets the used value to match the number of bits set in the allocator’s bitmap.
CLUSTER_ALLOC_BIT
A specific cluster’s use didn’t match the
setting of its bit in the cluster allocator.
Answering yes will invert the bit in the allocator to match the use of the cluster -- either allocated and in use or free.
REFCOUNT_FLAG_INVALID
Refcount file can only exist in a volume with refcount
supported, Fsck has found that a file in a non-refcount
volume has refcount flag set.
Answering yes remove this flag from the file.
REFCOUNT_LOC_INVALID
Refcount loc can only be valid if the file has refcount flag
set. Fsck has found that a file has refcount loc while it
doesn’t have refcount flag set.
Answering yes reset refcount loc to zero for the file.
RB_BLKNO
refcount blocks contain a record of the disk block where
they are located. An refcount block was found at a block
that didn’t match its recorded location.
Answering yes will update the data structure in the refcount block to reflect its real location on disk.
RB_GEN
Refcount blocks are created with a generation number to
match the generation number of the volume at the time of
creation. An refcount block was found which contains a
generation number that doesn’t match.
Answering yes implies that the generation number is correct and that the refcount block is from a previous file system. The refcount block will be removed and the file that uses it will lose the refcounted information, but it may be regenerated later.
RB_GEN_FIX
Refcount blocks are created with a generation number to
match the generation number of the volume at the time of
creation. An refcount block was found which contains a
generation number that doesn’t match.
Answering yes implies that the generation number in the refcount block is incorrect and that the refcount block is valid. The generation number in the block is updated to match the generation number in the volume.
RB_PARENT
refcount blocks contain a record of the parent this disk
block belongs to. An refcount block was found storing a
wrong parent location.
Answering yes will update the data structure in the refcount block to reflect its parent’s real location on disk.
REFCOUNT_LIST_COUNT
The number of entries in a refcount list is bounded by the
size of the block which contains it. An refcount list was
found which claims to have more entries than would fit in
its container.
Answering yes updates the count field in the refcount list to match the container. Answering no to this question may stop further fixes from being done because the count value can not be trusted.
REFCOUNT_LIST_USED
The number of free entries in a refcount list must be less
than the total number of entries in the list. A list was
found which claims to have more free entries than possible
entries.
Answering yes sets the number of free entries in the list equal to the total possible entries.
REFCOUNT_CLUSTER_RANGE
A refcount record was found which references a cluster which
can not be referenced by a refcount. The referenced cluster
is either very early in the volume, and thus reserved, or
beyond the end of the volume.
Answering yes removes this refcount record from the tree.
REFCOUNT_CLUSTER_COLLISION
A refcount record was found which references a cluster which
has a collision with the previous valid refcount record.
Answering yes removes this refcount record from the tree.
REFCOUNT_LIST_EMPTY
A refcount list was found which has no refcount record in
it. It is normally caused by a corrupted refcount
record.
Answering yes removes this refcount block from the tree. It will be re-generated in refcounted extent records handler if all the other information is sane.
REFCOUNT_BLOCK_INVALID
Refcount block stores the refcount record for physical
clusters of a file. It is found referring an invalid
refcount block.
Answering yes remove this refcount block.
REFCOUNT_CLUSTERS
Refcount tree contains a record of how many clusters are
allocated to them. A tree was found whose recorded number of
clusters doesn’t match the number of blocks that were
found associated with it.
Answering yes resets the number of clusters to reflect the real number of clusters that were associated with the tree.
REFCOUNT_ROOT_BLOCK_INVALID
Root refcount block is the root of the refcount record for a
file. It is found referring an invalid refcount block.
Answering yes remove this refcount block and clear refcount flag from this file.
REFCOUNT_REC_REDUNDANT
Refcount record is used to store the refcount for physical
clusters. Some refcount record is found to have no physical
clusters corresponding to it.
Answering yes remove the refcount record.
REFCOUNT_COUNT_INVALID
Refcount record is used to store the refcount for physical
clusters. A record record is found whichs claims the wrong
refcount for some physical clusters.
Answering yes update the corresponding refcount record.
REFCOUNT_COUNT
Refcount tree contains a record of how many files referring
to this tree. A tree was found whose recorded number of
files doesn’t match the real files referring to the
tree.
Answering yes resets the number of files to reflect the real number of files that were associated with the tree.
DUP_CLUSTERS_SYSFILE_CLONE
A system file inode claims clusters that are also claimed by
another inode. ocfs2 does not allow this. System files may
be cloned but may not be deleted. Allocation system files
may not be cloned or deleted.
Answering yes will copy the data of this inode to newly allocated extents. This will break the claim on the overcommitted clusters.
DUP_CLUSTERS_CLONE
An inode claims clusters that are also claimed by another
inode. ocfs2 does not allow this.
Answering yes will copy the data of this inode to newly allocated extents. This will break the claim on the overcommitted clusters.
DUP_CLUSTERS_DELETE
An inode claims clusters that are also claimed by another
inode. ocfs2 does not allow this.
Answering yes will remove this inode, thus breaking its claim on the overcommitted clusters.
DUP_CLUSTERS_ADD_REFCOUNT
An inode claims clusters that are also claimed by another
inode. ocfs2 does not allow this.
Answering yes will try to add a refcount record for all these inodes, so that they will share the cluster.
DIRENT_DOTTY_DUP
There can be only one instance of both the "." and
".." entries in a directory. A directory entry was
found which duplicated one of these entries.
Answering yes will remove the duplicate directory entry.
DIRENT_NOT_DOTTY
The first and second directory entries in a directory must
be "." and ".." respectively. One of
these directory entries was found to not match these
rules.
Answering yes will force the directory entry to be either "." or "..". This might consume otherwise valid entries and cause some files to appear in lost+found.
DIRENT_DOT_INODE
The inode field of the "." directory entry must
refer to the directory inode that contains the given
directory block. A "." entry was found which
doesn’t do so.
Answering yes sets the directory entry’s inode reference to the parent directory that contains the entry.
DIRENT_DOT_EXCESS
A "." directory entry was found whose lengths
exceeds the amount required for the single dot in the
name.
Answering yes creates another empty directory entry in this excess space.
DIRENT_ZERO
A directory entry was found with a zero length name.
Answering yes clears the directory entry so its space can be reused.
DIRENT_NAME_CHARS
Directory entries can not contain either the NULL character
(ASCII 0) or the forward slash (ASCII 47). A directory entry
was found which contains either.
Answering yes will change each instance of these forbidden characters into a period (ASCII 46).
DIRENT_INODE_RANGE
Each directory entry contains a inode field which the
entry’s name corresponds to. An entry was found which
referenced an inode number that is invalid for the current
volume.
Answering yes clears this entry so its space can be reused. If the entry once corresponded to a real inode and was corrupted this inode may appear in lost+found.
DIRENT_INODE_FREE
Each directory entry contains a inode field which the
entry’s name corresponds to. An entry was found which
referenced an inode number that isn’t in use.
Answering yes clears this directory entry.
DIRENT_TYPE
Each directory entry contains a field which describes the
type of file that the entry refers to. An entry was found
whose type doesn’t match the inode it is referring
to.
Answering yes resets the entry’s type to match the target inode.
DIR_PARENT_DUP
Each directory can only be pointed to by one directory entry
in a parent directory. A directory entry was found which was
the second entry to point to a given directory inode.
Answering yes clears this entry which was the second to refer to a given directory. This reflects the policy that hard links to directories are not allowed.
DIRENT_DUPLICATE
File names within a directory must be unique. A file name
occurred in more than one directory entry in a given
directory.
Answering yes renames the duplicate entry to a name that doesn’t collide with recent entries and is unlikely to collide with future entries in the directory.
DIRENT_LENGTH
There are very few directory entry lengths that are valid.
The lengths must be greater than the minimum required to
record a single character directory, be rounded to 12 bytes,
be within the amount of space remaining in a directory
block, and be properly rounded for the size of the name of
the directory entry. An entry was found which didn’t
meet these criteria.
Answering yes will try to repair the directory entry. This runs a very good chance of invalidating all the entries in the directory block. Orphaned inodes may appear in lost+found.
DIR_TRAILER_INODE
A directory block trailer is a fake directory entry at the
end of the block. The trailer has compatibility fields for
when it is viewed as a directory entry. The inode field must
be zero.
Answering yes will set the inode field to zero.
DIR_TRAILER_NAME_LEN
A directory block trailer is a fake directory entry at the
end of the block. The trailer has compatibility fields for
when it is viewed as a directory entry. The name length
field must be zero.
Answering yes will set the name length field to zero.
DIR_TRAILER_REC_LEN
A directory block trailer is a fake directory entry at the
end of the block. The trailer has compatibility fields for
when it is viewed as a directory entry. The record length
field must be equal to the size of the trailer.
Answering yes will set the record length field to the size of the trailer.
DIR_TRAILER_BLKNO
A directory block trailer is a fake directory entry at the
end of the block. The self-referential block number is
incorrect.
Answering yes will set the block number to the correct block on disk.
DIR_TRAILER_PARENT_INODE
A directory block trailer is a fake directory entry at the
end of the block. It has a pointer to the directory inode it
belongs to. This pointer is incorrect.
Answering yes will set the parent inode pointer to the inode referencing this directory block.
ROOT_DIR_MISSING
The super block contains a reference to the inode that
serves as the root directory. This reference points to an
inode that isn’t in use.
Answering yes will create a new inode and update the super block to refer to this inode as the root directory.
LOSTFOUND_MISSING
The super block contains a reference to the inode that
serves as the lost+found directory. This reference points to
an inode that isn’t in use.
Answering yes will create a new lost+found directory in the root directory.
DIR_NOT_CONNECTED
Every directory in the file system should be reachable by a
directory entry in its parent directory. This is verified by
walking every directory in the system. A directory inode was
found during this walk which doesn’t have a parent
directory entry.
Answering yes moves this directory entry into the lost+found directory and gives it a name based on its inode number.
DIR_DOTDOT
A directory inode’s ".." directory entry
must refer to the parent directory. A directory was found
whose ".." doesn’t refer to its parent.
Answering yes will read the directory block for the given directory and update its ".." entry to reflect its parent.
INODE_NOT_CONNECTED
Most all inodes in the system should be referenced by a
directory entry. An inode was found which isn’t
referred to by any directory entry.
Answering yes moves this inode into the lost+found directory and gives it a name based on its inode number.
INODE_COUNT
Each inode records the number of directory entries that
refer to it. An inode was found whose recorded count
doesn’t match the number of entries that refer to
it.
Answering yes sets the inode’s count to match the number of referring directory entries.
INODE_ORPHANED
While files are being deleted they are placed in an internal
directory. If the machine crashes while this is taking place
the files will be left in this directory. Fsck has found an
inode in this directory and would like to finish the job of
truncating and removing it.
Answering yes removes the file data associated with the inode and frees the inode.
RECOVER_BACKUP_SUPERBLOCK
When fsck.ocfs2 successfully uses the specified
backup superblock, it provides the user with this option to
overwrite the existing superblock with that backup.
Answering yes will refresh the superblock from the backup. Answering no will only disable the copying of the backup superblock and will not effect the remaining fsck.ocfs2 processing.
ORPHAN_DIR_MISSING
While files are being deleted they are placed in an internal
directory, named orphan directory. If an orphan directory
does not exist, an OCFS2 volume cannot be mounted
successfully. Fsck has found the orphan directory is missing
and would like to create it for future use.
Answering yes creates the orphan directory in the system directory.
JOURNAL_FILE_INVALID
OCFS2 uses JDB for journalling and some journal files exist
in the system directory. Fsck has found some journal files
that are invalid.
Answering yes to this question will regenerate the invalid journal files.
JOURNAL_UNKNOWN_FEATURE
Fsck has found some journal files with unknown features.
Other journals on the filesystem have only known features,
so this is likely a corruption. If you think your filesystem
may be newer than this version of fsck.ocfs2, say N here and
grab the latest version of fsck.ocfs2.
Answering yes resets the journal features to match other journals.
JOURNAL_MISSING_FEATURE
Fsck has found some journal files have features that are not
set on all journal files. All journals on filesystem should
have the same set of features.
Answering yes will set all journals to the union of set features.
JOURNAL_TOO_SMALL
Fsck has found some journal files are too small.
Answering yes extends these journals.
RECOVER_CLUSTER_INFO
The currently active cluster stack is different than the one
the filesystem is configured for. Thus, fsck.ocfs2 cannot
determine whether the filesystem is mounted on an another
node or not. The recommended solution is to exit and run
fsck.ocfs2 on this device from a node that has the
appropriate active cluster stack. However, you can proceed
with the fsck if you are sure that the volume is not in use
on any node.
Answering yes reconfigures the filesystem to use the current cluster stack. DANGER: YOU MUST BE ABSOLUTELY SURE THAT NO OTHER NODE IS USING THIS FILESYSTEM BEFORE CONTINUING. OTHERWISE, YOU CAN CORRUPT THE FILESYSTEM AND LOSE DATA.
INLINE_DATA_FLAG_INVALID
Inline file can only exist in a volume with inline
supported, Fsck has found that a file in a non-inline volume
has inline flag set.
Answering yes remove this flag from the file.
INLINE_DATA_COUNT_INVALID
For an inline file, there is a limit for
id2.id_data.id_count. Fsck has found that this value
isn’t right.
Answering yes change this value to the right number.
XATTR_BLOCK_INVALID
Extended attributes are stored off an extended attribute
block referenced by the inode. This inode references an
invalid extended attribute block.
Answering yes will remove this block.
XATTR_COUNT_INVALID
The count of extended attributes in an inode, block, or
bucket does not match the number of entries found by
fsck.
Answering yes will change this to the correct count.
XATTR_ENTRY_INVALID
An extended attribute entry points to already used
space.
Answering yes will remove this entry.
XATTR_NAME_OFFSET_INVALID
The name_offset field of an extended attribute entry is not
correct. Without a correct name_offset field, the entry
cannot be used.
Answering yes will remove this entry.
XATTR_VALUE_INVALID
The value region of an extended attribute points to already
used space.
Answering yes will remove this entry.
XATTR_LOCATION_INVALID
The xe_local field and xe_value_size field of an extended
attribute entry does not match. So the entry cannot be
used.
Answering yes will remove this entry.
XATTR_HASH_INVALID
Extended attributes use a hash of their name for lookup
purposes. The name_hash of this extended attribute entry is
not correct.
Answering yes will change this to the correct hash.
XATTR_FREE_START_INVALID
Extended attributes use free_start to indicate the offset of
the free space in inode, block, or bucket. The free_start
field of this object is not correct.
Answering yes will change this to the correct offset.
XATTR_VALUE_LEN_INVALID
Extended attributes use name_value_len to store the total
length of all entry’s name and value in inode, block
or bucket. the name_value_len filed of this object is not
correct.
Answering yes will change this to the correct value.
XATTR_BUCKET_COUNT_INVALID
The count of extended attributes bucket pointed by one
extent record does not match the number of buckets found by
fsck.
Answering yes will change this to the correct count.
QMAGIC_INVALID
The magic number in the header of quota file does not match
the proper number.
Answering yes will make fsck use values in the quota file header anyway.
QTREE_BLK_INVALID
Block with references to other blocks with quota data is
corrupted.
Answering yes will make fsck use references in the block.
DQBLK_INVALID
The structure with quota limits was found in a corrupted
block.
Answering yes will use the values of limits for the user / group.
DUP_DQBLK_INVALID
The structure with quota limits was found in a corrupted
block and fsck has already found quota limits for this user
/ group.
Answering yes will use new values of limits for the user / group.
DUP_DQBLK_VALID
The structure with quota limits was found in a correct block
but fsck has already found quota limits for this user /
group.
Answering yes will use new values of limits for the user / group.
IV_DX_TREE
A directory index was found on an inode but that feature is
not enabled on the file system.
Answering yes will truncate the invalid index.
DX_LOOKUP_FAILED
A directory entry is missing an entry in the directory
index. The missing index entry will cause lookups on this
name to fail.
Answering yes will rebuild the directory index, restoring the missing entry.
NO_HOLES
A metadata structure encountered a hole where it should not.
Examples of such structures are directories, refcount trees,
dx_trees etc.
Answering yes will remove the hole by updating the offset to the expected value.
EXTENT_OVERLAP
The extents of the file overlap, which means there could be
two or more possible data for a particular offset for the
file.
Answering yes will serialize the extents.
DX_TREE_CORRUPT
The index tree of the directory is corrupt.
Answering yes will rebuild the directory index, in pass 2.
DX_TREE_MISSING
The index of this directory is missing.
Answering yes will rebuild the directory index.
BAD_CRC32
The metadata block has a bad CRC32, which means either the
block or the crc32 field is corrupted.
Answering yes will recalculate the CRC32.
SEE ALSO
debugfs.ocfs2(8) fsck.ocfs2(8) mkfs.ocfs2(8) mount.ocfs2(8) mounted.ocfs2(8) o2cluster(8) o2image(8) o2info(1) tunefs.ocfs2(8)
AUTHORS
Oracle Corporation.
COPYRIGHT
Copyright © 2004, 2012 Oracle. All rights reserved.