forked from pifty/tutes-dump
127 lines
5.0 KiB
Plaintext
127 lines
5.0 KiB
Plaintext
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 |