Annotation of researchv10dc/dist/man/v4/man8/check.8, revision 1.1

1.1     ! root        1: .th CHECK VIII 8/31/73
        !             2: .sh NAME
        !             3: check \*- file system consistency check
        !             4: .sh SYNOPSIS
        !             5: .bd check
        !             6: [
        !             7: .bd \*-lsib
        !             8: [ numbers ]
        !             9: ]
        !            10: [ filesystem ]
        !            11: .sh DESCRIPTION
        !            12: .it Check
        !            13: examines a file system,
        !            14: builds a bit map of used blocks,
        !            15: and compares this bit map against
        !            16: the free list maintained on the file system.
        !            17: It also reads directories and compares
        !            18: the link-count in each i-node with the number of directory
        !            19: entries by which it is referenced.
        !            20: If the file system is not specified,
        !            21: a check of a
        !            22: default file system
        !            23: is performed.
        !            24: The normal output of
        !            25: .it check
        !            26: includes a report of
        !            27: .s3
        !            28: .lp +4 0
        !            29: The number of blocks missing; i.e. not in any file
        !            30: nor in the free list,
        !            31: .lp +4 0
        !            32: The number of special files,
        !            33: .lp +4 0
        !            34: The total number of files,
        !            35: .lp +4 0
        !            36: The number of large files,
        !            37: .lp +4 0
        !            38: The number of directories,
        !            39: .lp +4 0
        !            40: The number of indirect blocks,
        !            41: .lp +4 0
        !            42: The number of blocks used in files,
        !            43: .lp +4 0
        !            44: The highest-numbered block appearing in a file,
        !            45: .lp +4 0
        !            46: The number of free blocks.
        !            47: .s3
        !            48: .i0
        !            49: The
        !            50: .bd \*-l
        !            51: flag causes
        !            52: .it check
        !            53: to produce as part of its output report a list of the
        !            54: all the path names of files on the file system.
        !            55: The list is in i-number order; the first
        !            56: name for each file gives the i-number while subsequent
        !            57: names (i.e. links) have the i-number suppressed.
        !            58: The entries ``\fB.\fR'' and ``\fB..\fR''
        !            59: for directories are also suppressed.
        !            60: .s3
        !            61: The
        !            62: .bd \*-s
        !            63: flag causes
        !            64: .it check
        !            65: to ignore the actual free list and reconstruct a new one
        !            66: by rewriting the super-block of the file system.
        !            67: The file system should be dismounted while this is done;
        !            68: if this is not possible (for example if
        !            69: the root file system has to be salvaged)
        !            70: care should be taken that the system is quiescent and that
        !            71: it is rebooted immediately afterwards so that the old, bad in-core
        !            72: copy of the super-block will not continue to be used.
        !            73: Notice also that
        !            74: the words in the super-block
        !            75: which indicate the size of the free list and of the
        !            76: i-list are believed.
        !            77: If the super-block has been curdled
        !            78: these words will have to be patched.
        !            79: The
        !            80: .bd \*-s
        !            81: flag
        !            82: causes the normal output reports to be suppressed.
        !            83: .s3
        !            84: The occurrence
        !            85: of
        !            86: .bd i
        !            87: .it n
        !            88: times in a flag argument
        !            89: .bd \*-ii...i
        !            90: causes
        !            91: .it check
        !            92: to store away the next
        !            93: .it n
        !            94: arguments which are taken to be i-numbers.
        !            95: When any of these i-numbers is encountered in a directory
        !            96: a diagnostic is produced, as described below, which indicates among
        !            97: other things the entry name.
        !            98: .s3
        !            99: Likewise,
        !           100: .it n
        !           101: appearances of
        !           102: .bd b
        !           103: in a flag like
        !           104: .bd \*-bb...b
        !           105: cause the next
        !           106: .it n
        !           107: arguments to be taken as block numbers
        !           108: which are remembered;
        !           109: whenever any of the named blocks turns up in a file,
        !           110: a diagnostic is produced.
        !           111: .sh FILES
        !           112: Currently, /dev/rp0 is the default file system.
        !           113: .sh "SEE ALSO"
        !           114: fs (V)
        !           115: .sh DIAGNOSTICS
        !           116: There are some self-evident diagnostics like
        !           117: ``can't open ...'', ``can't write ....''
        !           118: If a read error is encountered,
        !           119: the block number of the bad block is printed and
        !           120: .it check
        !           121: exits.
        !           122: ``Bad freeblock'' means that
        !           123: a block number outside the available space was encountered in the free list.
        !           124: ``\fIn\fR dups in free''
        !           125: means that \fIn\fR blocks were found in the free list which
        !           126: duplicate blocks either in some file or in the earlier part of the free list.
        !           127: .s3
        !           128: An important class of diagnostics is produced by a routine which
        !           129: is called for each block which is encountered in an i-node
        !           130: corresponding to an ordinary file or directory.
        !           131: These have the form
        !           132: .s3
        !           133: .dt
        !           134:        \fIb# complaint \fB; i= \fIi# \fB(\fIclass \fB)\fR
        !           135: .s3
        !           136: Here
        !           137: .it b#
        !           138: is the block number being considered;
        !           139: .it complaint
        !           140: is the diagnostic itself.
        !           141: It may be
        !           142: .s3
        !           143: .lp +8 5
        !           144: \fBblk\fR      if the block number was mentioned as an argument
        !           145: after
        !           146: .bd \*-b;
        !           147: .lp +8 5
        !           148: \fBbad\fR      if the block number has a value not inside the allocatable space
        !           149: on the device, as indicated by the devices's super-block;
        !           150: .lp +8 5
        !           151: \fBdup\fR      if the block number has already been seen in a file;
        !           152: .lp +8 5
        !           153: \fBdin\fR      if
        !           154: the block is a member of a directory, and if an entry is found
        !           155: therein whose i-number is outside the
        !           156: range of the i-list on the device, as indicated by the
        !           157: i-list size specified by the super-block.
        !           158: Unfortunately this diagnostic does not indicate the
        !           159: offending entry name, but since the i-number
        !           160: of the directory itself is given (see below)
        !           161: the problem can be tracked down.
        !           162: .s3
        !           163: .i0
        !           164: The
        !           165: .it i#
        !           166: in the form above is the i-number in which the named block was found.
        !           167: The
        !           168: .it class
        !           169: is an indicator of what type of block was involved in the
        !           170: difficulty:
        !           171: .s3
        !           172: .lp +8 5
        !           173: \fBsdir\fR     indicates that the block is a data block in a small file;
        !           174: .lp +8 5
        !           175: \fBldir\fR     indicates that the block is a data block in a large file
        !           176: (the indirect block number is not available);
        !           177: .lp +8 5
        !           178: \fBidir\fR     indicates that the block is an indirect block
        !           179: (pointing to data blocks) in a large file;
        !           180: .lp +8 5
        !           181: \fBfree\fR     indicates that the block was mentioned after
        !           182: .bd \*-b
        !           183: and is free;
        !           184: .lp +8 5
        !           185: \fBurk\fR      indicates a malfunction in
        !           186: .it check.
        !           187: .s3
        !           188: .i0
        !           189: When an i-number specified after
        !           190: .bd \*-i
        !           191: is encountered while reading a directory,
        !           192: a report in the form
        !           193: .s3
        !           194:        \fi# \fBino; i= \fId# \fB(\fIclass \fB) \fIname\fR
        !           195: .s3
        !           196: where
        !           197: .it i#
        !           198: is the requested i-number.
        !           199: .it d#
        !           200: is the i-number of the directory,
        !           201: .it class
        !           202: is the class of the directory block as discussed above
        !           203: (virtually always
        !           204: ``sdir'')
        !           205: and
        !           206: .it name
        !           207: is the entry name.
        !           208: This diagnostic gives enough information
        !           209: to find a full path name for an i-number
        !           210: without using the
        !           211: .bd -l
        !           212: option:
        !           213: use
        !           214: .bd \*-b
        !           215: .it n
        !           216: to find an entry name and
        !           217: the i-number of the directory containing the reference to
        !           218: .it n,
        !           219: then recursively use
        !           220: .bd \*-b
        !           221: on the i-number of the directory to find its name.
        !           222: .s3
        !           223: Another important class of
        !           224: file system diseases indicated
        !           225: by
        !           226: .it check
        !           227: is files for which the number of directory entries does
        !           228: not agree with the link-count field of the i-node.
        !           229: The diagnostic is hard to interpret.
        !           230: It has the form
        !           231: .s3
        !           232: .dt
        !           233: .ft I
        !           234:        i#  delta
        !           235: .ft R
        !           236: .s3
        !           237: Here
        !           238: .it i#
        !           239: is the i-number affected.
        !           240: .it Delta
        !           241: is an octal number accumulated in a byte, and thus can have the
        !           242: value 0 through 377(8).
        !           243: The easiest way (short of rewriting the routine)
        !           244: of explaining the significance of
        !           245: .it delta
        !           246: is to describe how it is computed.
        !           247: .s3
        !           248: If the associated i-node is allocated
        !           249: (that is, has the
        !           250: .it allocated
        !           251: bit on)
        !           252: add 100 to
        !           253: .it delta.
        !           254: If its link-count is non-zero,
        !           255: add another 100 plus the link-count.
        !           256: Each time a directory entry specifying
        !           257: the associated i-number is encountered,
        !           258: subtract 1 from
        !           259: .it delta.
        !           260: At the end,
        !           261: the i-number and
        !           262: .it delta
        !           263: are printed if
        !           264: .it delta
        !           265: is neither 0 nor 200.
        !           266: The first case indicates that the i-node was unallocated
        !           267: and no entries for it appear;
        !           268: the second that it was allocated
        !           269: and that the link-count and the number of directory entries agree.
        !           270: .s3
        !           271: Therefore (to explain the symptoms of the most common difficulties)
        !           272: .it delta
        !           273: = 377 (\*-1 in 8-bit, 2's complement octal)
        !           274: means that there is a directory entry for an unallocated
        !           275: i-node.
        !           276: This is somewhat serious and the entry should be be found and removed forthwith.
        !           277: .it Delta
        !           278: = 201 usually means that a normal,
        !           279: allocated i-node has no directory entry.
        !           280: This difficulty is much less serious.
        !           281: Whatever blocks there are in the file
        !           282: are unavailable, but no further damage
        !           283: will occur if nothing is done.
        !           284: A
        !           285: .it clri
        !           286: followed by a
        !           287: .it "check \*-s"
        !           288: will restore the lost space at leisure.
        !           289: .s3
        !           290: In general,
        !           291: values of
        !           292: .it delta
        !           293: equal to or somewhat above 0, 100, or 200
        !           294: are relatively innocuous;
        !           295: just below these numbers there is danger of
        !           296: spreading infection.
        !           297: .sh BUGS
        !           298: Unfortunately,
        !           299: .it "check \*-l"
        !           300: on file systems
        !           301: with more than 3000 or so files
        !           302: does not work because it runs out of core.
        !           303: .s3
        !           304: Since
        !           305: .it check
        !           306: is inherently two-pass in nature, extraneous diagnostics
        !           307: may be produced if applied to active file systems.
        !           308: .s3
        !           309: It believes even preposterous super-blocks and
        !           310: consequently can get core images.

unix.superglobalmegacorp.com

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