@CHIP-RTOS - CHKDSK Shell Command Operation
IPC@CHIP® Documentation Index
The primary function of the
is to survey the disk's File Allocation Table (FAT) to determine if any
clusters are allocated which do not belong to any file or directory.
Such clusters are considered "lost". Lost clusters can result from
power being lost at the moment a file or directory was being updated
on the disk.
For external drives, a status message indicating whether or not
the "Clusters are aligned/misaligned with device flash pages
will appear, provided that the device driver in use offers the required
Currently this alignment check is only applied to SD cards. If misaligned, a
FORMAT action is recommended
in order to slightly improve the card's performance and reduce the wear
resulting from writes.
When CHKDSK is used with the /F command line option, the FAT entries
for lost clusters will be marked free to restore them to the disk's
available free space.
CHKDSK can be invoked using the
with results reported in a DiskStatS
object allocated by the user.
Assuming that no critical errors (e.g. "File system resources not available")
occur during the CHKDSK operation, a count of lost and bad clusters will be
reported to the console upon completion of the scan. For large drives, this
scan may require some significant time. The demand for
system memory can be high
for large drives with a high number of clusters (requirement: 1 byte
per 8 clusters).
The CHKDSK scan also checks for various other fault conditions within
the disk's FAT. The following set of messages may appear if any of
these unlikely faults are detected.
Invalid cluster numbers:
FAT entries must be either particular flag values or
reference an existing cluster number. This is the number of cluster
numbers read from the FAT which were neither. When the /F command line
option is used, these FAT entries will be changed to terminate the
respective file's cluster chain at this point.
Corrupt long file names (LFN):
Long file names are stored in directories over multiple directory entries
preceding the entry for which a long name applies. For each file
(or directory) found whose long file name was corrupt, this count will
be incremented. When the /F command line option is used, these LFN
nodes will be deleted. The corresponding file then will only have
its short 8.3 alias name to go by.
Bad LFN DIR nodes:
This is the number of long file name entries which were invalid. When
the /F command line option is used, these LFN nodes will be marked as
Invalid . or .. directory entry:
This count is incremented each time a . directory node does not reference
that directories own first cluster or when the .. directory entry does not
reference the parent directory's first cluster In either case, when the /F
command line option is used, these link nodes will be corrected to reference
the proper cluster.
For drives with more than a single FAT, the FAT0 and FAT1 are compared
block by block. These should match. Any mismatches are reported.
When the /F command line option is used, the FAT0 block will be
copied into FAT1 for any mismatching sectors. If the block
write verify done here indicates that the write was not successful, a count
with a "FAT block write failure"
message will appear.
If any of the following unexpected errors is reported, then a disk
is recommended. (The CHKDSK /F command line option does not remedy these
Cluster in use but not allocated:
A first cluster in a directory or file was not marked in the FAT
The . or .. directory entry repeated:
Each directory must have at most one self (.) reference and one parent
directory (..) reference. This error count is incremented when ever
multiple occurrences of either of these special directory link nodes is
Clusters in more than a single chain:
This is the number of times where a FAT entry references a cluster which
has already been referenced by some other FAT entry. This is an illegal
Directory depth limit exceeded:
This is the number of times that the subdirectory depth exceeded the
limit placed on the file system by the maximum path string length limit
of 260 characters. This error being detected is highly unlikely.
It will cause the remainder of the CHKDSK operation to be incomplete.
Infinite loop in file's cluster chain:
This count is incremented for each file encountered which had a cluster
chain which closed on itself.
File too short:
A file's cluster chain was not long enough to provide the number of
bytes stated in that file's directory node.
File too long:
A file's cluster chain was longer than the number of
bytes stated in that file's directory node.
End of document