    11/3/70
    FILE SYSTEM (V)

    NAME             format of file system

    SYNOPSIS

    DESCRIPTION      The RB09  fixed  head  disk  has  8,000  64-word
    blocks  on                    each of its two surfaces. Unix uses
    the second surface                   (physical  blocks  8,000  to
    15,999) and numbers them                  from logical block 0 to
    logical block 7,999. The  following                    discussion
    refers to logical blocks.

                     The Unix filesystem is divided into 8,000 blocks
    of 64 words                  per block. Block 0 is the  "sysdata"
    block.  The first word                  points to the first block
    of the free-storage map. Each block                  in the free-
    storage  map is structured as follows: the first
    word is the block number of the next block  in  the  free-storage
                      map,  or  zero  if this is the end of the free-
    storage map. The                  next nine words hold free block
    numbers, or zero (no block number).

                     Block 1 on the filesystem is unused. (?)

                     I-numbers  begin  at  1,  and the storage for i-
    nodes begins at
                     block 2. Blocks 2 to 711  contain  the  i-nodes,
    with five                  consecutive i-nodes per block. Certain
    i-nodes are reserved for                  special files, directo-
    ries and devices:

                         1   The core file written by "sys save" or a
    bad system call                     2   The "dd" directory direc-
    tory                           3      The    "system"   directory
                        6   The "ttyin" special file
    7   The "keyboard" (graphic-2) special file                     8
    The "pptin" (paper tape  reader)  special  file
    10    The "ttyout" special file                    11   The "dis-
    play"  (graphic-2)  special  file                      12     The
    "pptout" (paper tape punch) special file

                     There  is  only  one file system which is always
    mounted;
                     it resides on the RB disk. This device  is  also
    used  for                    swapping.  The swap areas are at the
    high blocks on this  device:                    blocks  6,400  to
    7,999. These blocks do not appear in the free list.

                     Each i-node represents one file. The format of
                     an  i-node  is as follows, where the left column
    represents
                     the offset in words from the beginning of the i-
    node:

                        0             flags   (see   below)
    1           first  indirect  block  or  contents  block
    ...                        7           seventh  indirect block or
    contents block
                        8           user ID of owner
                        9           link count
                       10             size    in    words
    11           unique value assigned at creation

                     The flags are as follows:

                        400000   i-node is allocated
                        200000         large       file
    ??????   allocated bit (always on)
                        000040   special file
                        000020   directory
                        000010   read, owner
                        000004   write, owner
                        000002   read, non-owner
                        000001   write, non-owner

                     The allocated bit (flag ??????) is believed even
    if  the i-node                  map says the i-node is free; thus
    corruption of the map may                  cause i-nodes  to  be-
    come  unallocatable,  but  will not cause active
    nodes to be reused.

                     Word number n of a file is accessed as  follows:
    n is
                     divided  by  64 to find its logical block number
    (say b) in
                     the file. If the file is small (flag  200000  is
    0), then b                  must be less than 7, and the physical
    block number corresponding                  to b is the bth entry
    in the address portion of the i-node.

                     If  the  file  is  large,  b is divided by 64 to
    yield a number
                     which must be less than 8 (or the  file  is  too
    large for
                     UNIX  to  handle). The corresponding slot in the
    i-node
                     address portion gives the physical block  number
    of an
                     indirect  block. The residue mod 64 gives a word
    offset
                     in the indirect block, and the word found  there
    is the                  physical address of the block correspond-
    ing to b.

                     If block b in a file exists, it is not necessary
    that all
                     blocks  less  than  b exist. A zero block number
    either in the
                     address words of the i-node or  in  an  indirect
    block
                     indicates that the corresponding block has never
    been
                     allocated. Such a missing block reads as  if  it
    contained
                     all zero words.

    FILES

    SEE ALSO          format of directories

    DIAGNOSTICS

    BUGS

    OWNER