NAME             format of file system


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
                 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
                 the offset in words from the beginning of the i-

                    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
                 address portion gives the physical block  number
of an
                 indirect  block. The residue mod 64 gives a word
                 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
                 indicates that the corresponding block has never
                 allocated. Such a missing block reads as  if  it
                 all zero words.


SEE ALSO          format of directories