Annotation of researchv10dc/vol2/fsck/fsck.m, revision 1.1

1.1     ! root        1: |make(rp)
        !             2: 
        !             3: |insert(../monk/monk.mac)
        !             4: 
        !             5: |comment(VOL2HEADER)|set_counter(page 581-1)|set_string(page_headers "'''")|set_string(even_headers "'Fsck \(em The UNIX File System Check Program''\f(NIfsck\fP'")|set_string(odd_headers "'\f(NIfsck\fP''Fsck \(em The UNIX File System Check Program'")|set_string(even_footers "_\\nP__UNIX Papers_")|set_string(odd_footers "'Research Tenth Edition''\\nP'")
        !             6: 
        !             7: |environment(S;
        !             8:        inline off, size -1;)
        !             9: 
        !            10: |environment(text_list;
        !            11:        list.type fixed, list.pre "\&", list.format 1, list.post "\ \ ",
        !            12:        list.indent "nnnnnn", list on;
        !            13: 
        !            14:        list off)
        !            15: 
        !            16: |author(name "T. J. Kowalski", initials TJK, location MH, department 11229,
        !            17:        extension x2771, room 2C-552)
        !            18: 
        !            19: |date(July 1, 1979)
        !            20: 
        !            21: |title(Fsck |sp(minus) The |s(UNIX) File System Check Program)
        !            22: 
        !            23: |keywords(File System Repair)
        !            24: 
        !            25: |begin(abstract)
        !            26: The |s(UNIX)|sp(registered) File System Check program |i(fsck)
        !            27: is an interactive file system check and repair program.
        !            28: |i(Fsck) uses the redundant structural information
        !            29: in the |s(UNIX) file system
        !            30: to do several consistency checks.
        !            31: If an inconsistency is detected,
        !            32: it is reported to the operator,
        !            33: who may elect to fix or ignore each inconsistency.
        !            34: These inconsistencies
        !            35: result from the permanent interruption of the file system updates,
        !            36: which are performed every time a file is modified.
        !            37: |i(Fsck) is frequently able to repair corrupted file systems
        !            38: using procedures based on the order in which |s(UNIX) honors
        !            39: these file system update requests.
        !            40: |p
        !            41: The purpose of this document
        !            42: is to describe the normal updating of the file system,
        !            43: to discuss the possible causes of file system corruption,
        !            44: and to present the corrective actions carried out by |i(fsck).
        !            45: Both the program
        !            46: and the interaction between the program and the operator are described.
        !            47: |end(abstract)
        !            48: 
        !            49: |titlebox
        !            50: 
        !            51: |style(two_column)
        !            52: 
        !            53: |section(Introduction)
        !            54: 
        !            55: When a |s(UNIX) system|reference(ritchie thompson unix cacm)
        !            56: is brought up,
        !            57: a consistency check of the file systems should always be performed.
        !            58: This precautionary measure
        !            59: helps to insure a reliable environment for file storage on disk.
        !            60: If an inconsistency is discovered,
        !            61: corrective action must be taken.
        !            62: No changes are made to any file system
        !            63: by |i(fsck) without prior operator approval.
        !            64: |p
        !            65: The purpose of this memo is to dispel the mystique
        !            66: surrounding file system inconsistencies.
        !            67: It first describes the updating of the file system
        !            68: (the calm before the storm)
        !            69: and then describes file system corruption (the storm).
        !            70: Finally,
        !            71: the set of heuristically sound corrective actions
        !            72: used by |i(fsck)|reference(system iii manual)
        !            73: (the Coast Guard to the rescue)
        !            74: is presented.
        !            75: 
        !            76: |section(Update Of The File System)
        !            77: 
        !            78: Every working day hundreds of files are created, modified, and removed.
        !            79: Every time a file is modified, the |s(UNIX) operating system
        !            80: performs a series of file system updates.
        !            81: These updates, when written on disk, yield a consistent file system.
        !            82: To understand what happens
        !            83: if a permanent interruption occurs in this sequence,
        !            84: it is important to know the probable order of update requests.|reference(thompson unix bstj)
        !            85: Knowing what pieces of information were probably written
        !            86: to the file system first,
        !            87: heuristic procedures can be developed to repair a corrupted file system.
        !            88: |p
        !            89: There are five types of file system updates.
        !            90: These involve the super-block,
        !            91: inodes, indirect blocks,
        !            92: data blocks (directories and files), and free list blocks.
        !            93: 
        !            94: |subsection(Super-Block)
        !            95: 
        !            96: The super-block contains
        !            97: part of the free block list,
        !            98: part of the free i-list,
        !            99: and information about
        !           100: the size of the file system,
        !           101: the size of the i-list,
        !           102: the count of free blocks,
        !           103: and the count of free inodes.
        !           104: |p
        !           105: The super-block of a mounted file system
        !           106: (the root file system is always mounted)
        !           107: is written whenever the file system is unmounted
        !           108: or a |i(sync) command is issued.
        !           109: 
        !           110: |subsection(Inodes)
        !           111: 
        !           112: An inode contains information about
        !           113: the type of inode (directory, data, or special),
        !           114: the number of directory entries linked to the inode,
        !           115: the list of blocks claimed by the inode,
        !           116: and the size of the inode.
        !           117: |p
        !           118: An inode is written to the file system
        !           119: when the file associated with the inode is closed.|footnote(All
        !           120: in-core blocks are also written to the file system on issue of
        !           121: a |i(sync) system call.)
        !           122: 
        !           123: |subsection(Indirect Blocks)
        !           124: 
        !           125: There are three types of indirect blocks:
        !           126: single-indirect, double-indirect and triple-indirect.
        !           127: A single-indirect block contains
        !           128: a list of some of the block numbers claimed by an inode.
        !           129: Each of the 128 indirect block entries is a data-block number.
        !           130: A double-indirect block contains a list of single-indirect block numbers.
        !           131: A triple-indirect block contains a list of double-indirect block numbers.
        !           132: |p
        !           133: Indirect blocks are written to the file system
        !           134: whenever they have been modified and released|footnote(More precisely,
        !           135: they are queued for eventual writing.
        !           136: Physical I/O is deferred until the buffer is needed by UNIX
        !           137: or a |i(sync) command is issued.)
        !           138: by the operating system.
        !           139: 
        !           140: |subsection(Data Blocks)
        !           141: 
        !           142: A data block may contain file information
        !           143: or directory entries.
        !           144: Each directory entry consists of a file name
        !           145: and an inode number.
        !           146: |p
        !           147: Data blocks are written to the file system
        !           148: whenever they have been modified and released by the operating system.
        !           149: 
        !           150: |subsection(First Free List Block)
        !           151: 
        !           152: The super-block contains the first free list block.
        !           153: The free list blocks
        !           154: are a list of all blocks that are not allocated to the super-block,
        !           155: inodes, indirect blocks, or data blocks.
        !           156: Each free list block contains
        !           157: a count of the number of entries in this free list block,
        !           158: a pointer to the next free list block,
        !           159: and a partial list of free blocks in the file system.
        !           160: |p
        !           161: Free list blocks are written to the file system
        !           162: whenever they have been modified and released by the operating system.
        !           163: 
        !           164: |section(Corruption Of The File System)
        !           165: 
        !           166: A file system can become corrupted in a variety of ways.
        !           167: The most common problems
        !           168: are improper shutdown procedures and hardware failures.
        !           169: 
        !           170: |subsection(Improper System Shutdown and Startup)
        !           171: 
        !           172: File systems may become corrupted when proper shutdown procedures
        !           173: are not observed, e.g.,
        !           174: forgetting to |i(sync) the system before halting the |s(CPU),
        !           175: physically write-protecting a mounted file system,
        !           176: or taking a mounted file system off-line.
        !           177: |p
        !           178: File systems may become further corrupted if proper startup procedures
        !           179: are not observed, e.g.,
        !           180: not checking a file system for inconsistencies,
        !           181: and not repairing inconsistencies.
        !           182: Allowing a corrupted file system to be used (and, thus, to be modified further)
        !           183: can be disastrous.
        !           184: 
        !           185: |subsection(Hardware Failure)
        !           186: 
        !           187: Any piece of hardware can fail at any time.
        !           188: Failures can be as subtle as a bad block on a disk pack,
        !           189: or as obvious as a non-functional disk-controller.
        !           190: 
        !           191: |section(Detection And Correction Of Corruption)
        !           192: 
        !           193: A quiescent|footnote(I.e., unmounted and not being written on.)
        !           194: file system may be checked for structural integrity
        !           195: by performing consistency checks on the redundant data
        !           196: intrinsic to a file system.
        !           197: The redundant data is either read from the file system
        !           198: or computed from other known values.
        !           199: A quiescent state is important during the checking of a file system
        !           200: because of the multi-pass nature of the |i(fsck) program.
        !           201: |p
        !           202: When an inconsistency is discovered
        !           203: |i(fsck) reports the inconsistency
        !           204: and requests the operator to choose a corrective action.
        !           205: |p
        !           206: Discussed in this section are how to discover inconsistencies
        !           207: and possible corrective actions
        !           208: for the super-block, the inodes, the indirect blocks,
        !           209: the data blocks containing directory entries, and the free list blocks.
        !           210: These corrective actions
        !           211: can be performed interactively by the |i(fsck) command
        !           212: under control of the operator.
        !           213: 
        !           214: |subsection(Super-Block)
        !           215: 
        !           216: The most common corrupted item is the super-block.
        !           217: The super-block is prone to corruption
        !           218: because every change to the file system's blocks or inodes
        !           219: modifies the super-block.
        !           220: |p
        !           221: The super-block and its associated parts
        !           222: are most often corrupted when the computer is halted
        !           223: and the last command involving output to the file system
        !           224: was not a |i(sync) command.
        !           225: |p
        !           226: The super-block can be checked for inconsistencies involving file system size,
        !           227: i-list size,
        !           228: free block list,
        !           229: free block count,
        !           230: and the free inode count.
        !           231: 
        !           232: |subsubsection(File system size and i-list size.)
        !           233: |save(File system size and i-list size.)
        !           234: 
        !           235: The file system size must be larger than the number of blocks
        !           236: used by the super-block
        !           237: and the number of blocks used by the list of inodes.
        !           238: The number of inodes must be less than 65,535.
        !           239: The file system size and i-list size
        !           240: are critical pieces of information to the |i(fsck) program.
        !           241: While there is no way to check these sizes,
        !           242: |i(fsck) can check that they are within reasonable bounds.
        !           243: All other checks of the file system
        !           244: depend on the correctness of these sizes.
        !           245: 
        !           246: |subsubsection(Free block list.)
        !           247: |save(Free block list.)
        !           248: 
        !           249: The free block list starts in the super-block
        !           250: and continues through the free list blocks of the file system.
        !           251: Each free list block can be checked
        !           252: for list count out of range,
        !           253: for block numbers out of range,
        !           254: and for blocks already allocated within the file system.
        !           255: A check is made to see that all the blocks in the file system were found.
        !           256: |p
        !           257: The first free block list is in the super-block.
        !           258: |i(Fsck) checks the list count
        !           259: for a value of less than zero or greater than fifty.
        !           260: It also checks each block number
        !           261: for a value of less than the first data block in the file system
        !           262: or greater than the last block in the file system.
        !           263: Then it compares each block number to a list of already allocated blocks.
        !           264: If the free list block pointer is non-zero,
        !           265: the next free list block is read in and the process is repeated.
        !           266: |p
        !           267: When all the blocks have been accounted for,
        !           268: a check is made to see if the number of blocks used by the free block list
        !           269: plus the number of blocks claimed by the inodes
        !           270: equals the total number of blocks in the file system.
        !           271: |p
        !           272: If anything is wrong with the free block list,
        !           273: then |i(fsck) may rebuild it,
        !           274: excluding all blocks in the list of allocated blocks.
        !           275: 
        !           276: |subsubsection(Free block count.)
        !           277: |save(Free block count.)
        !           278: 
        !           279: The super-block contains a count of the total number of free blocks
        !           280: within the file system.
        !           281: |i(Fsck) compares this count to the number of free blocks it found
        !           282: within the file system.
        !           283: If they don't agree,
        !           284: then |i(fsck) may replace the count in the super-block
        !           285: by the real free block count.
        !           286: 
        !           287: |subsubsection(Free inode count.)
        !           288: |save(Free inode count.)
        !           289: 
        !           290: The super-block contains a count of the total number of free inodes
        !           291: within the file system.
        !           292: |i(Fsck) compares this count to the number of free inodes it found
        !           293: within the file system.
        !           294: If they don't agree,
        !           295: then |i(fsck)
        !           296: may replace the count in the super-block by the real free inode count.
        !           297: 
        !           298: |subsection(Inodes)
        !           299: 
        !           300: An individual inode is not as likely to be corrupted as the super-block.
        !           301: However,
        !           302: because of the great number of active inodes,
        !           303: corruption in the i-list is almost as likely as corruption
        !           304: in the super-block.
        !           305: |p
        !           306: The list of inodes is checked sequentially starting with inode 1
        !           307: (there is no inode 0)
        !           308: and going to the last inode in the file system.
        !           309: Each inode can be checked for
        !           310: inconsistencies involving format and type,
        !           311: link count,
        !           312: duplicate blocks,
        !           313: bad blocks,
        !           314: and inode size.
        !           315: 
        !           316: |subsubsection(Format and type.)
        !           317: |save(Format and type.)
        !           318: 
        !           319: Each inode contains a mode word.
        !           320: This mode word describes the type and state of the inode.
        !           321: Inodes may be one of four types:
        !           322: regular inode, directory inode, special block inode,
        !           323: and special character inode.
        !           324: If an inode is not one of these types, then the inode has an illegal type.
        !           325: Inodes may be found in one of three states:
        !           326: unallocated, allocated, and neither unallocated nor allocated.
        !           327: This last state suggests an incorrectly formatted inode.
        !           328: Incorrect format may result
        !           329: if bad data is written into the i-list through,
        !           330: for example,
        !           331: a hardware failure.
        !           332: The only possible corrective action for |i(fsck) is clearing the inode.
        !           333: 
        !           334: |subsubsection(Link count.)
        !           335: |save(Link count.)
        !           336: 
        !           337: Contained in each inode is a count of the total number of directory entries
        !           338: linked to the inode.
        !           339: |p
        !           340: |i(Fsck) verifies the link count of each inode
        !           341: by traversing down the total directory structure,
        !           342: starting from the root directory,
        !           343: and calculating a real link count for each inode.
        !           344: |p
        !           345: If the stored link count is non-zero and the real link count is zero,
        !           346: it means that no directory entry appears for the inode.
        !           347: If the stored and real link counts are non-zero and unequal,
        !           348: a directory entry may have been added or removed
        !           349: without the inode being updated.
        !           350: |p
        !           351: If the stored link count is non-zero and the real link count is zero,
        !           352: |i(fsck) may link the disconnected file to the |cw(lost+found) directory.
        !           353: If the stored and real link counts are non-zero and unequal,
        !           354: |i(fsck) may replace the stored link count by the real link count.
        !           355: 
        !           356: |subsubsection(Duplicate blocks)
        !           357: |save(Duplicate blocks)
        !           358: 
        !           359: Contained in each inode is a list or pointers to lists (indirect blocks)
        !           360: of all the blocks claimed by the inode.
        !           361: |p
        !           362: |i(Fsck) compares each block number claimed by an inode
        !           363: to a list of already allocated blocks.
        !           364: If a block number is already claimed by another inode,
        !           365: the block number is added to a list of duplicate blocks.
        !           366: Otherwise,
        !           367: the list of allocated blocks is updated to include the block number.
        !           368: If there are any duplicate blocks,
        !           369: |i(fsck) will pass over part of the i-list a second time
        !           370: to find the inode of the duplicated block,
        !           371: because without examining the files
        !           372: associated with these inodes for correct content,
        !           373: there is not enough information available to decide what inode is corrupted
        !           374: and should be cleared.
        !           375: Usually the inode with the earliest modify time is incorrect
        !           376: and should be cleared.
        !           377: |p
        !           378: This condition can occur
        !           379: when a file system contains blocks claimed by both the free block list
        !           380: and by other parts of the file system.
        !           381: |p
        !           382: If there is a large number of duplicate blocks in an inode,
        !           383: this may be because an indirect block is not being written to the file system.
        !           384: |p
        !           385: |i(Fsck) will prompt the operator to clear both inodes.
        !           386: 
        !           387: |subsubsection(Bad blocks)
        !           388: |save(Bad blocks)
        !           389: 
        !           390: Contained in each inode
        !           391: is a list or pointer to lists of all the blocks claimed by the inode.
        !           392: |p
        !           393: |i(Fsck) checks each block number claimed by an inode
        !           394: for a value lower than that of the first data block,
        !           395: or greater than the last block in the file system.
        !           396: If the block number is outside this range,
        !           397: the block number is a bad block number.
        !           398: |p
        !           399: If there is a large number of bad blocks in an inode,
        !           400: this may be because an indirect block is not being written to the file system.
        !           401: |p
        !           402: |i(Fsck) will prompt the operator to clear both inodes.
        !           403: 
        !           404: |subsubsection(Size checks.)
        !           405: |save(Size checks.)
        !           406: 
        !           407: Each inode contains a thirty-two bit (four-byte) size field.
        !           408: This size shows the number of characters in the file
        !           409: associated with the inode.
        !           410: This size can be checked for inconsistencies,
        !           411: e.g.,
        !           412: directory sizes that are not a multiple of sixteen characters,
        !           413: or a mismatch between the number of blocks shown by the inode size
        !           414: and the number really in use.
        !           415: |p
        !           416: A directory inode within the |s(UNIX) file system
        !           417: has the directory bit set in the inode mode word.
        !           418: The directory size must be a multiple of sixteen
        !           419: because a directory entry contains sixteen bytes
        !           420: (two bytes for the inode number
        !           421: and fourteen bytes for the file or directory name).
        !           422: |p
        !           423: |i(Fsck) will warn of directory misalignment.
        !           424: This is only a warning
        !           425: because not enough information can be gathered to correct the misalignment.
        !           426: |p
        !           427: A rough check of the consistency of the size field of an inode
        !           428: can be performed by using it to compute
        !           429: the number of blocks that should be associated with the inode
        !           430: and comparing it to the real number of blocks claimed by the inode.
        !           431: |p
        !           432: |i(Fsck) calculates the number of blocks that should be in an inode
        !           433: by dividing the number of characters in an inode
        !           434: by the number of characters per block (512)
        !           435: and rounding up.
        !           436: |i(Fsck) adds one block for each indirect block associated with the inode.
        !           437: If the real number of blocks does not match the computed number of blocks,
        !           438: |i(fsck) will warn of a possible file-size error.
        !           439: This is only a warning
        !           440: because |s(UNIX) does not fill in blocks in files created in random order.
        !           441: 
        !           442: |subsection(Indirect Blocks)
        !           443: 
        !           444: Indirect blocks are owned by an inode.
        !           445: Therefore,
        !           446: inconsistencies in indirect blocks directly affect the inode that owns them.
        !           447: |p
        !           448: Inconsistencies that can be checked
        !           449: are blocks already claimed by another inode
        !           450: and block numbers outside the range of the file system.
        !           451: |p
        !           452: For a discussion of detection and correction
        !           453: of the inconsistencies associated with indirect blocks,
        !           454: apply iteratively Sections |remember(Duplicate blocks)
        !           455: and |remember(Bad blocks) to each level of indirect blocks.
        !           456: 
        !           457: |subsection(Data Blocks)
        !           458: |save(Data Blocks)
        !           459: 
        !           460: The two types of data blocks are
        !           461: plain data blocks and directory data blocks.
        !           462: Plain data blocks contain the information stored in a file.
        !           463: Directory data blocks contain directory entries.
        !           464: |i(Fsck) does not attempt to check
        !           465: the validity of the contents of a plain data block.
        !           466: |p
        !           467: Each directory data block can be checked for inconsistencies involving
        !           468: directory inode numbers pointing to unallocated inodes,
        !           469: directory inode numbers greater than the number of inodes in the file system,
        !           470: incorrect directory inode numbers for ``|b(.)'' and ``|b(..)'',
        !           471: and directories that are disconnected from the file system.
        !           472: |p
        !           473: If a directory entry inode number points to an unallocated inode,
        !           474: then |i(fsck) may remove that directory entry.
        !           475: This condition occurs when
        !           476: the data blocks containing the directory entries
        !           477: were modified and written to the file system
        !           478: but the corresponding inode was not.
        !           479: |p
        !           480: If a directory entry inode number is pointing beyond the end of the i-list,
        !           481: |i(fsck) may remove that directory entry.
        !           482: This condition occurs if bad data is written into a directory data block.
        !           483: |p
        !           484: The directory inode number entry for ``|b(.)''
        !           485: should be the first entry in the directory data block.
        !           486: Its value should be equal to the inode number for the directory data block.
        !           487: |p
        !           488: The directory inode number entry for ``|b(..)''
        !           489: should be the second entry in the directory data block.
        !           490: Its value should be equal to
        !           491: the inode number for the parent of the directory entry
        !           492: (or the inode number of the directory data block
        !           493: if the directory is the root directory).
        !           494: |p
        !           495: If the directory inode numbers are incorrect,
        !           496: |i(fsck) may replace them by the correct values.
        !           497: |p
        !           498: |i(Fsck) checks the general connectivity of the file system.
        !           499: If directories are found not to be linked into the file system,
        !           500: |i(fsck) will link the directory back into the file system
        !           501: in the |cw(lost+found) directory.
        !           502: This condition occurs when inodes are written to the file system
        !           503: but the corresponding directory data blocks are not.
        !           504: 
        !           505: |subsection(Free List Blocks)
        !           506: 
        !           507: Free list blocks are owned by the super-block.
        !           508: Therefore,
        !           509: inconsistencies in free list blocks directly affect the super-block.
        !           510: |p
        !           511: Inconsistencies that can be checked are
        !           512: list count out of range,
        !           513: block numbers out of range,
        !           514: and blocks already associated with the file system.
        !           515: |p
        !           516: For a discussion of detection and correction of the inconsistencies
        !           517: associated with free list blocks, see Section |remember(Free block list.).
        !           518: 
        !           519: |section(Acknowledgements)
        !           520: 
        !           521: I would like to thank Larry A. Wehr
        !           522: for advice that led to the first version of |i(fsck),
        !           523: and Rick B. Brandt for adapting |i(fsck) to |s(UNIX).
        !           524: 
        !           525: |reference_placement
        !           526: 
        !           527: |style(one_column)
        !           528: .ne 1i
        !           529: |appendix(FSCK ERROR CONDITIONS)
        !           530: 
        !           531: |style(two_column)
        !           532: 
        !           533: |section(Conventions)
        !           534: ...........
        !           535: 
        !           536: |i(Fsck) is a multi-pass file system check program.
        !           537: Each file system pass invokes a different |i(Phase) of the |i(fsck) program.
        !           538: After the initial setup,
        !           539: |i(fsck) performs successive |i(Phases) over each file system,
        !           540: checking blocks and sizes,
        !           541: path-names,
        !           542: connectivity,
        !           543: reference counts,
        !           544: and the free block list
        !           545: (possibly rebuilding it),
        !           546: and performs some cleanup.
        !           547: |p
        !           548: When an inconsistency is detected,
        !           549: |i(fsck) reports the error condition to the operator.
        !           550: If a response is required,
        !           551: |i(fsck) prints a prompt message and waits for a response.
        !           552: This appendix explains the meaning of each error condition,
        !           553: the possible responses,
        !           554: and the related error conditions.
        !           555: |p
        !           556: The error conditions are organized by the |i(Phase) of the |i(fsck) program
        !           557: in which they can occur.
        !           558: The error conditions that may occur in more than one Phase
        !           559: will be discussed under initialization.
        !           560: 
        !           561: |section(Initialization)
        !           562: 
        !           563: Before a file system check can be performed,
        !           564: certain tables have to be set up and certain files opened.
        !           565: This section concerns itself with the opening of files
        !           566: and the initialization of tables.
        !           567: It lists error conditions resulting from
        !           568: command line options,
        !           569: memory requests,
        !           570: opening of files,
        !           571: status of files,
        !           572: file system size checks,
        !           573: and creation of the scratch file.
        !           574: 
        !           575: |unnumbered_subsection{|cw[C option?]}
        !           576: 
        !           577: |cw(C) is not a legal option to |i(fsck);
        !           578: legal options are
        !           579: |cw(-y),
        !           580: |cw(-n),
        !           581: |cw(-s),
        !           582: |cw(-S),
        !           583: and
        !           584: |cw(-t).
        !           585: |i(Fsck) stops on this error condition.
        !           586: See the |i(fsck)(8) for further detail.
        !           587: 
        !           588: |unnumbered_subsection{|cw[Bad -t option]}
        !           589: 
        !           590: The |cw(-t) option is not followed by a file name.
        !           591: |i(Fsck) stops on this error condition.
        !           592: See the |i(fsck)(8) for further detail.
        !           593: 
        !           594: |unnumbered_subsection{|cw[Invalid -s argument, defaults assumed]}
        !           595: 
        !           596: The |cw(-s) option is not suffixed by 3, 4,
        !           597: or blocks-per-cylinder:blocks-to-skip.
        !           598: |i(Fsck) assumes a default value of 400 blocks-per-cylinder
        !           599: and 9 blocks-to-skip.
        !           600: See the |i(fsck)(8) for more details.
        !           601: 
        !           602: |unnumbered_subsection{|cw[Incompatible options: -n and -s]}
        !           603: 
        !           604: It is not possible to salvage the free block list
        !           605: without modifying the file system.
        !           606: |i(Fsck) stops on this error condition.
        !           607: See the |i(fsck)(8) for further detail.
        !           608: 
        !           609: |unnumbered_subsection{|cw[Can't get memory]}
        !           610: 
        !           611: |i(Fsck)'s request for memory for its virtual memory tables failed.
        !           612: This should never happen.
        !           613: |i(Fsck) stops on this error condition.
        !           614: See a guru.
        !           615: 
        !           616: |unnumbered_subsection{|cw[Can't open checklist file: F]}
        !           617: 
        !           618: The default file system checklist file |b(F) (usually |cw(/etc/checklist))
        !           619: cannot be opened for reading.
        !           620: |i(Fsck) stops on this error condition.
        !           621: Check access modes of |b(F).
        !           622: 
        !           623: |unnumbered_subsection{|cw[Can't stat root]}
        !           624: 
        !           625: |i(Fsck)'s request for statistics about the root directory ``/'' failed.
        !           626: This should never happen.
        !           627: |i(Fsck) stops on this error condition.
        !           628: See a guru.
        !           629: 
        !           630: |unnumbered_subsection{|cw[Can't stat F]}
        !           631: 
        !           632: |i(Fsck)'s request for statistics about the file system |b(F) failed.
        !           633: It ignores this file system and continues checking the next file system given.
        !           634: Check access modes of |b(F).
        !           635: 
        !           636: |unnumbered_subsection{|cw[F is not a block or character device]}
        !           637: 
        !           638: You have given |i(fsck) a regular file name by mistake.
        !           639: It ignores this file system and continues checking the next file system given.
        !           640: Check file type of |b(F).
        !           641: 
        !           642: |unnumbered_subsection{|cw[Can't open F]}
        !           643: 
        !           644: The file system |b(F) cannot be opened for reading.
        !           645: It ignores this file system and continues checking the next file system given.
        !           646: Check access modes of |b(F).
        !           647: 
        !           648: |unnumbered_subsection{|cw[Size check: fsize X isize Y]}
        !           649: 
        !           650: More blocks are used for the i-list |b(Y)
        !           651: than there are blocks in the file system |b(X),
        !           652: or there are more than 65,535 inodes in the file system.
        !           653: It ignores this file system and continues checking the next file system given.
        !           654: See Section |remember(File system size and i-list size.).
        !           655: 
        !           656: |unnumbered_subsection{|cw[Can't create F]}
        !           657: 
        !           658: |i(Fsck)'s request to create a scratch file |b(F) failed.
        !           659: It ignores this file system and continues checking the next file system given.
        !           660: Check access modes of |b(F).
        !           661: 
        !           662: |unnumbered_subsection{|cw[CAN NOT SEEK: BLK B (CONTINUE)]}
        !           663: 
        !           664: |i(Fsck)'s request for moving to a specified block number |b(B)
        !           665: in the file system failed.
        !           666: This should never happen.
        !           667: See a guru.
        !           668: |p
        !           669: Possible responses to the |s(CONTINUE) prompt are:
        !           670: 
        !           671: |blank_space(1)
        !           672: |begin(text_list)
        !           673: 
        !           674: |S(|item(YES)) attempt to continue the file system check.
        !           675: Often,
        !           676: however the problem will persist.
        !           677: This error condition will not allow a complete check of the file system.
        !           678: A second run of |i(fsck) should be made to re-check this file system.
        !           679: If the block was part of the virtual memory buffer cache,
        !           680: |i(fsck) will stop with the message ``Fatal I/O error''.
        !           681: 
        !           682: |S(|item(NO)) stop the program.
        !           683: 
        !           684: |end(text_list)
        !           685: 
        !           686: |unnumbered_subsection{|cw[CAN NOT READ: BLK B (CONTINUE)]}
        !           687: 
        !           688: |i(Fsck)'s request for reading a specified block number |b(B)
        !           689: in the file system failed.
        !           690: This should never happen.
        !           691: See a guru.
        !           692: |p
        !           693: Possible responses to the |s(CONTINUE) prompt are:
        !           694: 
        !           695: |blank_space(1)
        !           696: |begin(text_list)
        !           697: 
        !           698: |S(|item(YES)) attempt to continue the file system check.
        !           699: Often,
        !           700: however,
        !           701: the problem will persist.
        !           702: This error condition will not allow a complete check of the file system.
        !           703: A second run of |i(fsck) should be made to re-check this file system.
        !           704: If the block was part of the virtual memory buffer cache,
        !           705: |i(fsck) will stop with the message ``Fatal I/O error''.
        !           706: 
        !           707: |S(|item(NO)) stop the program.
        !           708: 
        !           709: |end(text_list)
        !           710: 
        !           711: |unnumbered_subsection{|cw[CAN NOT WRITE: BLK B (CONTINUE)]}
        !           712: |i(Fsck)'s request for writing a specified block number |b(B)
        !           713: in the file system failed.
        !           714: The disk is write-protected.
        !           715: See a guru.
        !           716: |p
        !           717: Possible responses to the |s(CONTINUE) prompt are:
        !           718: 
        !           719: |blank_space(1)
        !           720: |begin(text_list)
        !           721: 
        !           722: |S(|item(YES)) attempt to continue the file system check.
        !           723: Often,
        !           724: however,
        !           725: the problem will persist.
        !           726: This error condition will not allow a complete check of the file system.
        !           727: A second run of |i(fsck) should be made to re-check this file system.
        !           728: If the block was part of the virtual memory buffer cache,
        !           729: |i(fsck) will stop with the message ``Fatal I/O error''.
        !           730: 
        !           731: |S(|item(NO)) stop the program.
        !           732: 
        !           733: |end(text_list)
        !           734: 
        !           735: |section(Phase 1: Check blocks and sizes)
        !           736: 
        !           737: This phase concerns itself with the i-list.
        !           738: This section lists error conditions resulting from
        !           739: checking inode types,
        !           740: setting up the zero-link-count table,
        !           741: examining inode block numbers for bad or duplicate blocks,
        !           742: checking inode size,
        !           743: and checking inode format.
        !           744: 
        !           745: |unnumbered_subsection{|cw[UNKNOWN FILE TYPE I=I (CLEAR)]}
        !           746: 
        !           747: The mode word of the inode |b(I) shows that the inode is not a
        !           748: special character inode,
        !           749: regular inode,
        !           750: or directory inode.
        !           751: See Section |remember(Format and type.).
        !           752: |p
        !           753: Possible responses to the |s(CLEAR) prompt are:
        !           754: 
        !           755: |blank_space(1)
        !           756: |begin(text_list)
        !           757: 
        !           758: |S(|item(YES)) de-allocate inode |b(I) by zeroing its contents.
        !           759: This will always invoke the |s(UNALLOCATED) error condition in Phase 2
        !           760: for each directory entry pointing to this inode.
        !           761: 
        !           762: |S(|item(NO)) ignore this error condition.
        !           763: 
        !           764: |end(text_list)
        !           765: 
        !           766: |unnumbered_subsection{|cw[LINK COUNT TABLE OVERFLOW (CONTINUE)]}
        !           767: 
        !           768: An internal table for |i(fsck)
        !           769: containing allocated inodes with a link count of zero has no more room.
        !           770: Recompile |i(fsck) with a larger value of |s(MAXLNCNT).
        !           771: |p
        !           772: Possible responses
        !           773: to the |s(CONTINUE) prompt are:
        !           774: 
        !           775: |blank_space(1)
        !           776: |begin(text_list)
        !           777: 
        !           778: |S(|item(YES)) continue with the program.
        !           779: This error condition will not allow a complete check of the file system.
        !           780: A second run of |i(fsck) should be made to re-check this file system.
        !           781: If another allocated inode with a zero link count is found,
        !           782: this error condition is repeated.
        !           783: 
        !           784: |S(|item(NO)) stop the program.
        !           785: 
        !           786: |end(text_list)
        !           787: 
        !           788: |unnumbered_subsection{|cw[B BAD I=I]}
        !           789: 
        !           790: Inode |b(I) contains block number |b(B) with a number lower than
        !           791: the number of the first data block in the file system
        !           792: or greater than the number of the last block in the file system.
        !           793: This error condition
        !           794: may invoke the |s(EXCESSIVE) |s(BAD) |s(BLKS) error condition in Phase 1
        !           795: if inode |b(I) has too many block numbers outside the file system range.
        !           796: This error condition will always invoke the |s(BAD)/|s(DUP) error condition
        !           797: in Phase 2 and Phase 4.
        !           798: See Section |remember(Bad blocks).
        !           799: 
        !           800: |unnumbered_subsection{|cw[EXCESSIVE BAD BLKS I=I (CONTINUE)]}
        !           801: 
        !           802: There is more than a tolerable number (usually 10) of blocks
        !           803: with a number lower than the number of the first data block in the file system
        !           804: or greater than the number of last block in the file system
        !           805: associated with inode |b(I).
        !           806: See Section |remember(Bad blocks).
        !           807: |p
        !           808: Possible responses to the |s(CONTINUE) prompt are:
        !           809: 
        !           810: |blank_space(1)
        !           811: |begin(text_list)
        !           812: 
        !           813: |S(|item(YES)) ignore the rest of the blocks in this inode
        !           814: and continue checking with the next inode in the file system.
        !           815: This error condition will not allow a complete check of the file system.
        !           816: A second run of |i(fsck) should be made to re-check this file system.
        !           817: 
        !           818: |S(|item(NO)) stop the program.
        !           819: 
        !           820: |end(text_list)
        !           821: 
        !           822: |unnumbered_subsection{|cw[B DUP I=I]}
        !           823: 
        !           824: Inode |b(I) contains block number |b(B),
        !           825: which is already claimed by another inode.
        !           826: This error condition
        !           827: may invoke the |s(EXCESSIVE) |s(DUP) |s(BLKS) error condition in Phase 1
        !           828: if inode |b(I) has too many block numbers claimed by other inodes.
        !           829: This error condition will always invoke Phase 1b
        !           830: and the |s(BAD)/|s(DUP) error condition in Phase 2 and Phase 4.
        !           831: See Section |remember(Duplicate blocks).
        !           832: 
        !           833: |unnumbered_subsection{|cw[EXCESSIVE DUP BLKS I=I (CONTINUE)]}
        !           834: 
        !           835: There is more than a tolerable number (usually 10) of blocks
        !           836: claimed by other inodes.
        !           837: See Section |remember(Duplicate blocks).
        !           838: |p
        !           839: Possible responses to the |s(CONTINUE) prompt are:
        !           840: 
        !           841: |blank_space(1)
        !           842: |begin(text_list)
        !           843: 
        !           844: |S(|item(YES)) ignore the rest of the blocks in this inode
        !           845: and continue checking with the next inode in the file system.
        !           846: This error condition will not allow a complete check of the file system.
        !           847: A second run of |i(fsck) should be made to re-check this file system.
        !           848: 
        !           849: |S(|item(NO)) stop the program.
        !           850: 
        !           851: |end(text_list)
        !           852: 
        !           853: |unnumbered_subsection{|cw[DUP TABLE OVERFLOW (CONTINUE)]}
        !           854: 
        !           855: An internal table in |i(fsck)
        !           856: containing duplicate block numbers has no more room.
        !           857: Recompile |i(fsck) with a larger value of |s(DUPTBLSIZE).
        !           858: |p
        !           859: Possible responses to the |s(CONTINUE) prompt are:
        !           860: 
        !           861: |blank_space(1)
        !           862: |begin(text_list)
        !           863: 
        !           864: |S(|item(YES)) continue with the program.
        !           865: This error condition will not allow a complete check of the file system.
        !           866: A second run of |i(fsck) should be made to re-check this file system.
        !           867: If another duplicate block is found, this error condition will repeat.
        !           868: 
        !           869: |S(|item(NO)) stop the program.
        !           870: 
        !           871: |end(text_list)
        !           872: 
        !           873: |unnumbered_subsection{|cw[POSSIBLE FILE SIZE ERROR I=I]}
        !           874: 
        !           875: The inode |b(I) size
        !           876: does not match the real number of blocks used by the inode.
        !           877: This is only a warning.
        !           878: See Section |remember(Size checks.).
        !           879: 
        !           880: |unnumbered_subsection{|cw[DIRECTORY MISALIGNED I=I]}
        !           881: 
        !           882: The size of a directory inode
        !           883: is not a multiple of the size of a directory entry (usually 16).
        !           884: This is only a warning.
        !           885: See Section |remember(Size checks.).
        !           886: 
        !           887: |unnumbered_subsection{|cw[PARTIALLY ALLOCATED INODE I=I (CLEAR)]}
        !           888: 
        !           889: Inode |b(I) is neither allocated nor unallocated.
        !           890: See Section |remember(Format and type.).
        !           891: |p
        !           892: Possible responses to the |s(CLEAR) prompt are:
        !           893: 
        !           894: |blank_space(1)
        !           895: |begin(text_list)
        !           896: 
        !           897: |S(|item(YES)) de-allocate inode |b(I) by zeroing its contents.
        !           898: 
        !           899: |S(|item(NO)) ignore this error condition.
        !           900: 
        !           901: |end(text_list)
        !           902: 
        !           903: |section(Phase 1b: Rescan for more dups)
        !           904: 
        !           905: When a duplicate block is found in Phase 1,
        !           906: the file system is rescanned to find the inode
        !           907: that previously claimed that block.
        !           908: This section describes when the duplicate block is found.
        !           909: 
        !           910: |unnumbered_subsection{|cw[B DUP I=I]}
        !           911: 
        !           912: Inode |b(I) contains block number |b(B),
        !           913: which is already claimed by another inode.
        !           914: This error will always invoke the |s(BAD)/|s(DUP) error condition
        !           915: in Phase 2.
        !           916: You can determine what inodes have overlapping blocks
        !           917: by examining this error condition
        !           918: and the |s(DUP) error condition in Phase 1.
        !           919: See Section |remember(Duplicate blocks).
        !           920: 
        !           921: .......
        !           922: |section(Phase 2: Check path-names)
        !           923: 
        !           924: This phase concerns itself with removing directory entries pointing to
        !           925: flawed inodes detected in Phase 1 and Phase 1b.
        !           926: This section lists error conditions resulting from
        !           927: root inode mode and status,
        !           928: directory inode pointers in range,
        !           929: and directory entries pointing to bad inodes.
        !           930: 
        !           931: |unnumbered_subsection{|cw[ROOT INODE UNALLOCATED. TERMINATING.]}
        !           932: 
        !           933: The root inode (usually inode number 2) has no allocate mode bits.
        !           934: This should never happen.
        !           935: The program will stop.
        !           936: See Section |remember(Format and type.).
        !           937: 
        !           938: |unnumbered_subsection{|cw[ROOT INODE NOT DIRECTORY (FIX)]}
        !           939: 
        !           940: The root inode (usually inode number 2) is not directory inode type.
        !           941: See Section |remember(Format and type.).
        !           942: |p
        !           943: Possible responses to the |s(FIX) prompt are:
        !           944: 
        !           945: |blank_space(1)
        !           946: |begin(text_list)
        !           947: 
        !           948: |S(|item(YES)) make the root inode's type be a directory.
        !           949: If the root inode's data blocks are not directory blocks,
        !           950: a large number of error conditions will be produced.
        !           951: 
        !           952: |S(|item(NO)) stop the program.
        !           953: 
        !           954: |end(text_list)
        !           955: 
        !           956: |unnumbered_subsection{|cw[DUPS/BAD IN ROOT INODE (CONTINUE)]}
        !           957: 
        !           958: Phase 1 or Phase 1b has found duplicate blocks
        !           959: or bad blocks in the root inode (usually inode number 2) for the file system.
        !           960: See Sections |remember(Duplicate blocks) and |remember(Bad blocks).
        !           961: |p
        !           962: Possible responses to the |s(CONTINUE) prompt are:
        !           963: 
        !           964: |blank_space(1)
        !           965: |begin(text_list)
        !           966: 
        !           967: |S(|item(YES)) ignore the |s(DUPS)/|s(BAD) error condition in the root inode and
        !           968: attempt to continue the file system check.
        !           969: If the root inode is not correct,
        !           970: then this action may result in a large number of other error conditions.
        !           971: 
        !           972: |S(|item(NO)) stop the program.
        !           973: 
        !           974: |end(text_list)
        !           975: 
        !           976: |unnumbered_subsection{|cw[I OUT OF RANGE I=I NAME=F (REMOVE)]}
        !           977: 
        !           978: A directory entry |b(F) has an inode number |b(I)
        !           979: that is greater than the end of the i-list.
        !           980: See Section |remember(Data Blocks).
        !           981: |p
        !           982: Possible responses to the |s(REMOVE) prompt are:
        !           983: 
        !           984: |blank_space(1)
        !           985: |begin(text_list)
        !           986: 
        !           987: |S(|item(YES)) the directory entry |b(F) will be removed.
        !           988: 
        !           989: |S(|item(NO)) ignore this error condition.
        !           990: 
        !           991: |end(text_list)
        !           992: 
        !           993: |unnumbered_subsection{|cw[UNALLOCATED I=I OWNER=O MODE=M SIZE=S MTIME=T NAME=F (REMOVE)]}
        !           994: 
        !           995: A directory entry |b(F) has an inode |b(I) without allocate mode bits.
        !           996: The owner |b(O), mode |b(M), size |b(S), modify time |b(T),
        !           997: and file name |b(F) are printed.
        !           998: See Section |remember(Data Blocks).
        !           999: |p
        !          1000: Possible responses to the |s(REMOVE) prompt are:
        !          1001: 
        !          1002: |blank_space(1)
        !          1003: |begin(text_list)
        !          1004: 
        !          1005: |S(|item(YES)) the directory entry |b(F) will be removed.
        !          1006: 
        !          1007: |S(|item(NO)) ignore this error condition.
        !          1008: 
        !          1009: |end(text_list)
        !          1010: 
        !          1011: |unnumbered_subsection{|cw[DUP/BAD I=I OWNER=O MODE=M SIZE=S MTIME=T DIR=F (REMOVE)]}
        !          1012: 
        !          1013: Phase 1 or Phase 1b has found duplicate blocks or bad blocks
        !          1014: associated with directory entry/inode |b(F)/|b(I).
        !          1015: The owner |b(O), mode |b(M), size |b(S), modify time |b(T),
        !          1016: and directory name |b(F) are printed.
        !          1017: See Sections |remember(Duplicate blocks) and |remember(Bad blocks).
        !          1018: |p
        !          1019: Possible responses to the |s(REMOVE) prompt are:
        !          1020: 
        !          1021: |blank_space(1)
        !          1022: |begin(text_list)
        !          1023: 
        !          1024: |S(|item(YES)) the directory entry |b(F) will be removed.
        !          1025: 
        !          1026: |S(|item(NO)) ignore this error condition.
        !          1027: 
        !          1028: |end(text_list)
        !          1029: 
        !          1030: |unnumbered_subsection{|cw[DUP/BAD I=I OWNER=O MODE=M SIZE=S MTIME=T FILE=F (REMOVE)]}
        !          1031: 
        !          1032: Phase 1 or Phase 1b has found duplicate blocks or bad blocks
        !          1033: associated with directory entry/inode |b(F)/|b(I).
        !          1034: The owner |b(O), mode |b(M), size |b(S), modify time |b(T),
        !          1035: and file name |b(F) are printed.
        !          1036: See Sections |remember(Duplicate blocks) and |remember(Bad blocks).
        !          1037: |p
        !          1038: Possible responses to the |s(REMOVE) prompt are:
        !          1039: 
        !          1040: |blank_space(1)
        !          1041: |begin(text_list)
        !          1042: 
        !          1043: |S(|item(YES)) the directory entry |b(F) will be removed.
        !          1044: 
        !          1045: |S(|item(NO)) ignore this error condition.
        !          1046: 
        !          1047: |end(text_list)
        !          1048: 
        !          1049: |section(Phase 3: Check connectivity)
        !          1050: 
        !          1051: This phase concerns itself with the directory connectivity seen in Phase 2.
        !          1052: This section lists error conditions resulting from
        !          1053: unreferenced directories
        !          1054: and missing or full |cw(lost+found) directories.
        !          1055: 
        !          1056: |unnumbered_subsection{|cw[UNREF DIR I=I OWNER=O MODE=M SIZE=S MTIME=T (RECONNECT)]}
        !          1057: 
        !          1058: The directory inode |b(I)
        !          1059: was not connected to a directory entry when the file system was traversed.
        !          1060: The owner |b(O), mode |b(M), size |b(S),
        !          1061: and modify time |b(T) of directory inode |b(I) are printed.
        !          1062: See Sections |remember(Data Blocks) and |remember(Link count.).
        !          1063: |p
        !          1064: Possible responses to the |s(RECONNECT) prompt are:
        !          1065: 
        !          1066: |blank_space(1)
        !          1067: |begin(text_list)
        !          1068: 
        !          1069: |S(|item(YES)) reconnect directory inode |b(I) to the file system
        !          1070: in the directory for lost files (usually |cw(lost+found)).
        !          1071: This action may invoke the |cw(lost+found) error condition in Phase 3
        !          1072: if there are problems connecting directory inode |b(I) to |cw(lost+found).
        !          1073: If the link is successful,
        !          1074: this action may also invoke the |s(CONNECTED) error condition in Phase 3.
        !          1075: 
        !          1076: |S(|item(NO)) ignore this error condition.
        !          1077: The |s(UNREF) error condition in Phase 4 will always occur as a result.
        !          1078: 
        !          1079: |end(text_list)
        !          1080: 
        !          1081: |unnumbered_subsection{|cw[SORRY. NO lost+found DIRECTORY]}
        !          1082: 
        !          1083: There is no |cw(lost+found) directory in the root directory of the file system;
        !          1084: |i(fsck) ignores the request to link a directory in |cw(lost+found).
        !          1085: The |s(UNREF) error condition in Phase 4 will always occur as a result.
        !          1086: Check access modes of |cw(lost+found).
        !          1087: See |i(fsck)(1M) manual entry for further detail.
        !          1088: 
        !          1089: |unnumbered_subsection{|cw[SORRY. NO SPACE IN lost+found DIRECTORY]}
        !          1090: 
        !          1091: There is no space to add another entry to the |cw(lost+found) directory
        !          1092: in the root directory of the file system;
        !          1093: |i(fsck) ignores the request to link a directory in |cw(lost+found).
        !          1094: The |s(UNREF) error condition in Phase 4 will always occur as a result.
        !          1095: Clean out unnecessary entries in |cw(lost+found)
        !          1096: or make |cw(lost+found) larger.
        !          1097: See |i(fsck)(1M) manual entry for further detail.
        !          1098: 
        !          1099: |unnumbered_subsection{|cw[DIR I=I1 CONNECTED. PARENT WAS I=I2]}
        !          1100: 
        !          1101: This is an advisory message showing that a directory inode |b(I1)
        !          1102: was successfully connected to the |cw(lost+found) directory.
        !          1103: The parent inode |b(I2) of the directory inode |b(I1)
        !          1104: is replaced by the inode number of the |cw(lost+found) directory.
        !          1105: See Sections |remember(Data Blocks) and |remember(Link count.).
        !          1106: 
        !          1107: |section(Phase 4: Check reference counts)
        !          1108: 
        !          1109: This phase concerns itself with the link count information
        !          1110: seen in Phase 2 and Phase 3.
        !          1111: This section lists error conditions resulting from
        !          1112: unreferenced files,
        !          1113: missing or full |cw(lost+found) directory,
        !          1114: incorrect link counts for files, directories, or special files,
        !          1115: unreferenced files and directories,
        !          1116: bad and duplicate blocks in files and directories,
        !          1117: and incorrect total free inode counts.
        !          1118: 
        !          1119: |unnumbered_subsection{|cw[UNREF FILE I=I OWNER=O MODE=M SIZE=S MTIME=T (RECONNECT)]}
        !          1120: 
        !          1121: Inode |b(I)
        !          1122: was not connected to a directory entry when the file system was traversed.
        !          1123: The owner |b(O), mode |b(M), size |b(S),
        !          1124: and modify time |b(T) of inode |b(I) are printed.
        !          1125: See Section |remember(Link count.).
        !          1126: |p
        !          1127: Possible responses to the |s(RECONNECT) prompt are:
        !          1128: 
        !          1129: |blank_space(1)
        !          1130: |begin(text_list)
        !          1131: 
        !          1132: |S(|item(YES)) reconnect inode |b(I) to the file system
        !          1133: in the directory for lost files (usually |cw(lost+found)).
        !          1134: This action may invoke the |cw(lost+found) error condition in Phase 4
        !          1135: if there are problems connecting inode |b(I) to |cw(lost+found).
        !          1136: 
        !          1137: |S(|item(NO)) ignore this error condition.
        !          1138: This will always invoke the |s(CLEAR) error condition in Phase 4.
        !          1139: 
        !          1140: |end(text_list)
        !          1141: 
        !          1142: |unnumbered_subsection{|cw[SORRY. NO lost+found DIRECTORY]}
        !          1143: 
        !          1144: There is no |cw(lost+found) directory in the root directory of the file system;
        !          1145: |i(fsck) ignores the request to link a file in |cw(lost+found).
        !          1146: This will always invoke the |s(CLEAR) error condition in Phase 4.
        !          1147: Check access modes of |cw(lost+found).
        !          1148: 
        !          1149: |unnumbered_subsection{|cw[SORRY. NO SPACE IN lost+found DIRECTORY]}
        !          1150: 
        !          1151: There is no space to add another entry to the |cw(lost+found) directory
        !          1152: in the root directory of the file system;
        !          1153: |i(fsck) ignores the request to link a file in |cw(lost+found).
        !          1154: This will always invoke the |s(CLEAR) error condition in Phase 4.
        !          1155: Check size and contents of |cw(lost+found).
        !          1156: 
        !          1157: |unnumbered_subsection{|cw[(CLEAR)]}
        !          1158: 
        !          1159: The inode mentioned in the immediately previous error condition
        !          1160: cannot be reconnected.
        !          1161: See Section |remember(Link count.).
        !          1162: |p
        !          1163: Possible responses to the |s(CLEAR) prompt are:
        !          1164: 
        !          1165: |blank_space(1)
        !          1166: |begin(text_list)
        !          1167: 
        !          1168: |S(|item(YES)) de-allocate the inode
        !          1169: mentioned in the preceding error condition by zeroing its contents.
        !          1170: 
        !          1171: |S(|item(NO)) ignore this error condition.
        !          1172: 
        !          1173: |end(text_list)
        !          1174: 
        !          1175: |unnumbered_subsection{|cw[LINK COUNT FILE I=I OWNER=O MODE=M SIZE=S MTIME=T COUNT=X SHOULD BE Y (ADJUST)]}
        !          1176: 
        !          1177: The link count for inode |b(I), which is a file, is |b(X) but should be |b(Y).
        !          1178: The owner |b(O), mode |b(M), size |b(S), and modify time |b(T) are printed.
        !          1179: See Section |remember(Link count.).
        !          1180: |p
        !          1181: Possible responses to the |s(ADJUST) prompt are:
        !          1182: 
        !          1183: |blank_space(1)
        !          1184: |begin(text_list)
        !          1185: 
        !          1186: |S(|item(YES)) replace the link count of file inode |b(I) with |b(Y).
        !          1187: 
        !          1188: |S(|item(NO)) ignore this error condition.
        !          1189: 
        !          1190: |end(text_list)
        !          1191: 
        !          1192: |unnumbered_subsection{|cw[LINK COUNT DIR I=I OWNER=O MODE=M SIZE=S MTIME=T COUNT=X SHOULD BE Y (ADJUST)]}
        !          1193: 
        !          1194: The link count for inode |b(I),
        !          1195: which is a directory, is |b(X) but should be |b(Y).
        !          1196: The owner |b(O), mode |b(M), size |b(S),
        !          1197: and modify time |b(T) of directory inode |b(I) are printed.
        !          1198: See Section |remember(Link count.).
        !          1199: |p
        !          1200: Possible responses to the |s(ADJUST) prompt are:
        !          1201: 
        !          1202: |blank_space(1)
        !          1203: |begin(text_list)
        !          1204: 
        !          1205: |S(|item(YES)) replace the link count of directory inode |b(I) with |b(Y).
        !          1206: 
        !          1207: |S(|item(NO)) ignore this error condition.
        !          1208: 
        !          1209: |end(text_list)
        !          1210: 
        !          1211: |unnumbered_subsection{|cw[LINK COUNT F I=I OWNER=O MODE=M SIZE=S MTIME=T COUNT=X SHOULD BE Y (ADJUST)]}
        !          1212: 
        !          1213: The link count for inode |b(I) is |b(X) but should be |b(Y).
        !          1214: The name |b(F), owner |b(O), mode |b(M), size |b(S),
        !          1215: and modify time |b(T) are printed.
        !          1216: See Section |remember(Link count.).
        !          1217: |p
        !          1218: Possible responses to the |s(ADJUST) prompt are:
        !          1219: 
        !          1220: |blank_space(1)
        !          1221: |begin(text_list)
        !          1222: 
        !          1223: |S(|item(YES)) replace the link count of inode |b(I) with |b(Y).
        !          1224: 
        !          1225: |S(|item(NO)) ignore this error condition.
        !          1226: 
        !          1227: |end(text_list)
        !          1228: 
        !          1229: |unnumbered_subsection{|cw[UNREF FILE I=I OWNER=O MODE=M SIZE=S MTIME=T (CLEAR)]}
        !          1230: 
        !          1231: Inode |b(I), which is a file,
        !          1232: was not connected to a directory entry when the file system was traversed.
        !          1233: The owner |b(O), mode |b(M), size |b(S),
        !          1234: and modify time |b(T) of inode |b(I) are printed.
        !          1235: See Sections |remember(Link count.) and |remember(Data Blocks).
        !          1236: |p
        !          1237: Possible responses to the |s(CLEAR) prompt are:
        !          1238: 
        !          1239: |blank_space(1)
        !          1240: |begin(text_list)
        !          1241: 
        !          1242: |S(|item(YES)) de-allocate inode |b(I) by zeroing its contents.
        !          1243: 
        !          1244: |S(|item(NO)) ignore this error condition.
        !          1245: 
        !          1246: |end(text_list)
        !          1247: 
        !          1248: |unnumbered_subsection{|cw[UNREF DIR I=I OWNER=O MODE=M SIZE=S MTIME=T (CLEAR)]}
        !          1249: 
        !          1250: Inode |b(I), which is a directory,
        !          1251: was not connected to a directory entry when the file system was traversed.
        !          1252: The owner |b(O), mode |b(M), size |b(S),
        !          1253: and modify time |b(T) of inode |b(I) are printed.
        !          1254: See Sections |remember(Link count.) and |remember(Data Blocks).
        !          1255: |p
        !          1256: Possible responses to the |s(CLEAR) prompt are:
        !          1257: 
        !          1258: |blank_space(1)
        !          1259: |begin(text_list)
        !          1260: 
        !          1261: |S(|item(YES)) de-allocate inode |b(I) by zeroing its contents.
        !          1262: 
        !          1263: |S(|item(NO)) ignore this error condition.
        !          1264: 
        !          1265: |end(text_list)
        !          1266: 
        !          1267: |unnumbered_subsection{|cw[BAD/DUP FILE I=I OWNER=O MODE=M SIZE=S MTIME=T (CLEAR)]}
        !          1268: 
        !          1269: Phase 1 or Phase 1b has found duplicate blocks or bad blocks
        !          1270: associated with file inode |b(I).
        !          1271: The owner |b(O), mode |b(M), size |b(S),
        !          1272: and modify time |b(T) of inode |b(I) are printed.
        !          1273: See Sections |remember(Duplicate blocks) and |remember(Bad blocks).
        !          1274: |p
        !          1275: Possible responses to the |s(CLEAR) prompt are:
        !          1276: 
        !          1277: |blank_space(1)
        !          1278: |begin(text_list)
        !          1279: 
        !          1280: |S(|item(YES)) de-allocate inode |b(I) by zeroing its contents.
        !          1281: 
        !          1282: |S(|item(NO)) ignore this error condition.
        !          1283: 
        !          1284: |end(text_list)
        !          1285: 
        !          1286: |unnumbered_subsection{|cw[BAD/DUP DIR I=I OWNER=O MODE=M SIZE=S MTIME=T (CLEAR)]}
        !          1287: 
        !          1288: Phase 1 or Phase 1b has found duplicate blocks or bad blocks
        !          1289: associated with directory inode |b(I).
        !          1290: The owner |b(O), mode |b(M), size |b(S),
        !          1291: and modify time |b(T) of inode |b(I) are printed.
        !          1292: See Sections |remember(Duplicate blocks) and |remember(Bad blocks).
        !          1293: |p
        !          1294: Possible responses to the |s(CLEAR) prompt are:
        !          1295: 
        !          1296: |blank_space(1)
        !          1297: |begin(text_list)
        !          1298: 
        !          1299: |S(|item(YES)) de-allocate inode |b(I) by zeroing its contents.
        !          1300: 
        !          1301: |S(|item(NO)) ignore this error condition.
        !          1302: 
        !          1303: |end(text_list)
        !          1304: 
        !          1305: |unnumbered_subsection{|cw[FREE INODE COUNT WRONG IN SUPERBLK (FIX)]}
        !          1306: 
        !          1307: The real count of the free inodes
        !          1308: does not match the count in the super-block of the file system.
        !          1309: See Section |remember(Free inode count.).
        !          1310: |p
        !          1311: Possible responses to the |s(FIX) prompt are:
        !          1312: 
        !          1313: |blank_space(1)
        !          1314: |begin(text_list)
        !          1315: 
        !          1316: |S(|item(YES)) replace the count in the super-block by the real count.
        !          1317: 
        !          1318: |S(|item(NO)) ignore this error condition.
        !          1319: 
        !          1320: |end(text_list)
        !          1321: 
        !          1322: |section(Phase 5: Check free list)
        !          1323: 
        !          1324: This phase concerns itself with the free block list.
        !          1325: This section lists error conditions resulting from
        !          1326: bad blocks in the free block list,
        !          1327: bad free blocks count,
        !          1328: duplicate blocks in the free block list,
        !          1329: unused blocks from the file system not in the free block list,
        !          1330: and an incorrect total free block count.
        !          1331: 
        !          1332: |unnumbered_subsection{|cw[EXCESSIVE BAD BLKS IN FREE LIST (CONTINUE)]}
        !          1333: 
        !          1334: The free block list contains more than a tolerable number (usually 10)
        !          1335: of blocks with a value less than the first data block in the file system
        !          1336: or greater than the last block in the file system.
        !          1337: See Sections |remember(Free block list.) and |remember(Bad blocks).
        !          1338: |p
        !          1339: Possible responses to the |s(CONTINUE) prompt are:
        !          1340: 
        !          1341: |blank_space(1)
        !          1342: |begin(text_list)
        !          1343: 
        !          1344: |S(|item(YES)) ignore the rest of the free block list
        !          1345: and continue the execution of |i(fsck).
        !          1346: This error condition will always invoke
        !          1347: the |s(BAD) |s(BLKS) |s(IN) |s(FREE) |s(LIST) error condition in Phase 5.
        !          1348: 
        !          1349: |S(|item(NO)) stop the program.
        !          1350: 
        !          1351: |end(text_list)
        !          1352: 
        !          1353: |unnumbered_subsection{|cw[EXCESSIVE DUP BLKS IN FREE LIST (CONTINUE)]}
        !          1354: 
        !          1355: The free block list contains more than a tolerable number (usually 10)
        !          1356: of blocks claimed by inodes or earlier parts of the free block list.
        !          1357: See Sections |remember(Free block list.) and |remember(Duplicate blocks).
        !          1358: |p
        !          1359: Possible responses to the |s(CONTINUE) prompt are:
        !          1360: 
        !          1361: |blank_space(1)
        !          1362: |begin(text_list)
        !          1363: 
        !          1364: |S(|item(YES)) ignore the rest of the free block list
        !          1365: and continue the execution of |i(fsck).
        !          1366: This error condition will always invoke
        !          1367: the |s(DUP) |s(BLKS) |s(IN) |s(FREE) |s(LIST) error condition in Phase 5.
        !          1368: 
        !          1369: |S(|item(NO)) stop the program.
        !          1370: 
        !          1371: |end(text_list)
        !          1372: 
        !          1373: |unnumbered_subsection{|cw[BAD FREEBLK COUNT]}
        !          1374: 
        !          1375: The count of free blocks in a free list block is greater than 50
        !          1376: or less than zero.
        !          1377: This error condition will always invoke
        !          1378: the |s(BAD) |s(FREE) |s(LIST) condition in Phase 5.
        !          1379: See Section |remember(Free block list.).
        !          1380: 
        !          1381: |unnumbered_subsection{|cw[X BAD BLKS IN FREE LIST]}
        !          1382: 
        !          1383: |b(X) blocks in the free block list
        !          1384: have a block number lower than the first data block in the file system
        !          1385: or greater than the last block in the file system.
        !          1386: This error condition will always invoke
        !          1387: the |s(BAD) |s(FREE) |s(LIST) condition in Phase 5.
        !          1388: See Sections |remember(Free block list.) and |remember(Bad blocks).
        !          1389: 
        !          1390: |unnumbered_subsection{|cw[X DUP BLKS IN FREE LIST]}
        !          1391: 
        !          1392: |b(X) blocks claimed by inodes or earlier parts of the free list block
        !          1393: were found in the free block list.
        !          1394: This error condition will always invoke
        !          1395: the |s(BAD) |s(FREE) |s(LIST) condition in Phase 5.
        !          1396: See Sections |remember(Free block list.) and |remember(Duplicate blocks).
        !          1397: 
        !          1398: |unnumbered_subsection{|cw[X BLK(S) MISSING]}
        !          1399: 
        !          1400: |b(X) blocks unused by the file system were not found in the free block list.
        !          1401: This error condition will always invoke
        !          1402: the |s(BAD) |s(FREE) |s(LIST) condition in Phase 5.
        !          1403: See Section |remember(Free block list.).
        !          1404: 
        !          1405: |unnumbered_subsection{|cw[FREE BLK COUNT WRONG IN SUPERBLOCK (FIX)]}
        !          1406: 
        !          1407: The real count of free blocks
        !          1408: does not match the count in the super-block of the file system.
        !          1409: See Section |remember(Free block count.).
        !          1410: |p
        !          1411: Possible responses to the |s(FIX) prompt are:
        !          1412: 
        !          1413: |blank_space(1)
        !          1414: |begin(text_list)
        !          1415: 
        !          1416: |S(|item(YES)) replace the count in the super-block by the real count.
        !          1417: 
        !          1418: |S(|item(NO)) ignore this error condition.
        !          1419: 
        !          1420: |end(text_list)
        !          1421: 
        !          1422: |unnumbered_subsection{|cw[BAD FREE LIST (SALVAGE)]}
        !          1423: 
        !          1424: Phase 5 has found
        !          1425: bad blocks in the free block list,
        !          1426: duplicate blocks in the free block list,
        !          1427: or blocks missing from the file system.
        !          1428: See Sections |remember(Free block list.), |remember(Duplicate blocks),
        !          1429: and |remember(Bad blocks).
        !          1430: |p
        !          1431: Possible responses to the |s(SALVAGE) prompt are:
        !          1432: 
        !          1433: |blank_space(1)
        !          1434: |begin(text_list)
        !          1435: 
        !          1436: |S(|item(YES)) replace the current free block list with a new free block list.
        !          1437: The new free block list will be ordered to reduce time
        !          1438: spent by the disk waiting to rotate into position.
        !          1439: 
        !          1440: |S(|item(NO)) ignore this error condition.
        !          1441: 
        !          1442: |end(text_list)
        !          1443: 
        !          1444: |section(Phase 6: Salvage free list)
        !          1445: 
        !          1446: This phase concerns itself with the free block list reconstruction.
        !          1447: This section lists error conditions resulting from
        !          1448: the blocks-to-skip and blocks-per-cylinder values.
        !          1449: 
        !          1450: |unnumbered_subsection{|cw[Default free block list spacing assumed]}
        !          1451: 
        !          1452: This is an advisory message
        !          1453: showing that the blocks-to-skip is greater than the blocks-per-cylinder,
        !          1454: the blocks-to-skip is less than one,
        !          1455: the blocks-per-cylinder is less than one,
        !          1456: or the blocks-per-cylinder is greater than 500.
        !          1457: The default values of 9 blocks-to-skip and 400 blocks-per-cylinder are used.
        !          1458: See the |i(fsck)(1M) manual entry for further detail.
        !          1459: 
        !          1460: |section(Cleanup)
        !          1461: 
        !          1462: Once a file system has been checked, a few cleanup functions are performed.
        !          1463: This section lists advisory messages about
        !          1464: the file system
        !          1465: and its modified status.
        !          1466: 
        !          1467: |unnumbered_subsection{|cw[X files Y blocks Z free]}
        !          1468: 
        !          1469: This is an advisory message showing that the file system checked
        !          1470: contained |b(X) files
        !          1471: using |b(Y) blocks
        !          1472: leaving |b(Z) blocks free in the file system.
        !          1473: 
        !          1474: |unnumbered_subsection{|cw[***** BOOT UNIX (NO SYNC!) *****]}
        !          1475: 
        !          1476: This is an advisory message showing that a mounted file system
        !          1477: or the root file system has been modified by |i(fsck).
        !          1478: If |s(UNIX) is not rebooted immediately,
        !          1479: the work done by |i(fsck)
        !          1480: may be undone by the in-core copies of tables kept by |s(UNIX).
        !          1481: 
        !          1482: |unnumbered_subsection{|cw[***** FILE SYSTEM WAS MODIFIED *****]}
        !          1483: 
        !          1484: This is an advisory message showing that the current file system
        !          1485: was modified by |i(fsck).
        !          1486: If this file system is mounted or is the current root file system,
        !          1487: |i(fsck) should be halted and |s(UNIX) rebooted.
        !          1488: If |s(UNIX) is not rebooted immediately,
        !          1489: the work done by |i(fsck)
        !          1490: may be undone by the in-core copies of tables kept by |s(UNIX).

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.