ICHECK(VIII)                  2/9/75                 ICHECK(VIII)

     icheck - file system storage consistency check

     icheck [ -s ]  [ -b numbers ] [ filesystem ]

     Icheck  examines  a  file  system,  builds a bit map of used
     blocks, and compares this bit  map  against  the  free  list
     maintained  on  the  file system.  If the file system is not
     specified, a set of default file systems  is  checked.   The
     normal output of icheck includes a report of

         The  number  of blocks missing; i.e. not in any file nor
         in the free list,
         The number of special files,
         The total number of files,
         The number of large and huge files,
         The number of directories,
         The number of indirect blocks, and the number of double-
         indirect blocks in huge files,
         The number of blocks used in files,
         The number of free blocks.

     The -s flag causes icheck to ignore the actual free list and
     reconstruct a new one by rewriting the  super-block  of  the
     file  system.   The  file  system should be dismounted while
     this is done; if this is not possible (for  example  if  the
     root  file  system  has to be salvaged) care should be taken
     that the system is quiescent and that it is rebooted immedi-
     ately  afterwards  so  that the old, bad in-core copy of the
     super-block will not continue to be used.  Notice also  that
     the  words in the super-block which indicate the size of the
     free list and of the i-list are  believed.   If  the  super-
     block  has been curdled these words will have to be patched.
     The -s flag causes the normal  output  reports  to  be  sup-

     Following  the  -b flag is a list of block numbers; whenever
     any of the named blocks turns up in a file, a diagnostic  is

     Icheck  is  faster if the raw version of the special file is
     used, since it reads the i-list many blocks at a time.

     Currently, /dev/rrk2 and /dev/rrp0 are the default file sys-

     dcheck(VIII),   ncheck(VIII),  fs(V),  clri(VIII),

                              - 1 -

ICHECK(VIII)                  2/9/75                 ICHECK(VIII)

     For duplicate blocks and bad blocks (which lie  outside  the
     file  system) icheck announces the difficulty, the i-number,
     and the kind of block involved.  If a read error is  encoun-
     tered,  the  block  number  of  the bad block is printed and
     icheck considers it to contain 0.  ``Bad  freeblock''  means
     that  a block number outside the available space was encoun-
     tered in the free list.  ``n dups in  free''  means  that  n
     blocks  were  found  in the free list which duplicate blocks
     either in some file or in the earlier part of the free list.

     Since  icheck  is  inherently two-pass in nature, extraneous
     diagnostics may be produced if applied to active  file  sys-
     It  believes even preposterous super-blocks and consequently
     can get core images.

                              - 2 -