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