|
|
1.1 root 1: .pa 1
2: .he 'FILE SYSTEM (V)'3/15/72'FILE SYSTEM (V)'
3: .ti 0
4: NAME format of file system
5: .sp
6: .ti 0
7: DESCRIPTION
8: .br
9: .in 8
10: Every
11: file system storage volume
12: (e.g. RF disk, RK disk, DECtape reel)
13: has a common format for certain vital information.
14:
15: Every such volume is divided into a certain number
16: of 256 word (512 byte) blocks. Blocks 0 and 1 are
17: collectively known as the super_____-block_____ for the device;
18: they define its extent and contain an i-node map
19: and a free-storage map.
20: The first word
21: contains the number of bytes in the free-storage
22: map; it is always even.
23: It is followed by the map.
24: There is one bit for each block on the device; the bit is "1"
25: if the block is free.
26: Thus if the
27: number of free-map bytes is n_, the blocks on the device
28: are numbered 0 through 8n_-1.
29: The free-map count is followed by the free map
30: itself.
31: The bit for block k_ of the device
32: is in byte k_/8 of the map; it is offset k_(mod 8) bits from the right.
33: Notice that bits exist for the superblock and the i-list,
34: even though they are never allocated or freed.
35:
36: After the free map is a word containing the byte count
37: for the i-node map. It too is always even.
38: I-numbers below 41(10) are reserved
39: for special files, and are
40: never allocated; the first bit in the i-node
41: free map refers to i-number 41.
42: Therefore the byte number in the i-node map
43: for i-node i_ is (i_-41)/8.
44: It is offset (i_-41) (mod 8) bits from the right; unlike
45: the free map, a "0" bit indicates an available i-node.
46:
47: I-numbers begin at 1, and the storage for i-nodes
48: begins at block 2.
49: Also, i-nodes are 32 bytes long, so 16 of them fit into a block.
50: Therefore, i-node i_ is located in block (i_+31)/16 of
51: the file system, and begins 32\u.\d((i_+31)(mod 16)) bytes
52: from its start.
53:
54: There is always one file system which is always mounted;
55: in standard UNIX it resides on the RF disk.
56: This device is also used for swapping.
57: On the primary file system device, there are
58: several pieces of information following that previously
59: discussed.
60: There are two words with the calendar time
61: (measured since 00:00 Jan 1, 1972);
62: two words with the time spent executing in the system;
63: two words with the time spent waiting for I/O on the RF and RK
64: disks; two words with the time spent executing in a user's
65: core; one byte with the count of errors on the RF
66: disk; and one byte with the count of errors on the RK disk.
67: All the times are measured in sixtieths of a second.
68:
69: I-node 41(10) is reserved for the root directory of the
70: file system.
71: No i-numbers other than this one and those from
72: 1 to 40 (which represent special files) have a built-in
73: meaning.
74: Each i-node represents one file.
75: The format of an i-node is as follows, where the
76: left column represents the offset from the beginning
77: of the i-node:
78: .sp
79: .nf
80: .in +3
81: 0-1 flags (see below)
82: 2 number of links
83: 3 user ID of owner
84: 4-5 size in bytes
85: 6-7 first indirect block or contents block
86: .li
87: ...
88: 20-21 eighth indirect block or contents block
89: 22-25 creation time
90: 26-29 modification time
91: 30-31 unused
92: .fi
93: .sp
94: .ti -3
95: The flags are as follows:
96: .sp
97: .nf
98: 100000 i-node is allocated
99: 040000 directory
100: 020000 file has been modified (always on)
101: 010000 large file
102: 000040 set user ID on execution
103: 000020 executable
104: 000010 read, owner
105: 000004 write, owner
106: 000002 read, non-owner
107: 000001 write, non-owner
108: .sp
109: .in -3
110: .fi
111: The allocated bit (flag 100000) is believed even
112: if the i-node map says the i-node is free;
113: thus corruption of the map may cause i-nodes
114: to become unallocatable, but will not cause active
115: nodes to be reused.
116:
117: Byte number n_ of a file is accessed as follows:
118: n_ is divided by 512 to find its logical block number (say b_)
119: in the file.
120: If the file is small (flag 010000 is 0),
121: then b_ must be less than 8, and the physical block
122: number corresponding to b_ is the b_th entry
123: in the address portion of the i-node.
124:
125: Even if the file is large, b_ will be less than
126: 128 (128*512 = 2^16).
127: The first number in the i-node address
128: portion
129: gives the physical block number of the indirect block.
130: b_ is doubled
131: to give a byte offset in the indirect block
132: and the word there found is the physical address of
133: the block corresponding to b_.
134:
135: For block b_ in a file to exist, it
136: is not necessary that all blocks less than b_ exist.
137: A zero block number either in the address words of
138: the i-node or in an indirect block indicates that the
139: corresponding block has never been allocated.
140: Such a missing block reads as if it contained all zero words.
141:
142: .in 16
143: .ti 0
144: BUGS Two blocks are not enough to handle
145: the i- and free-storage maps for an RP02
146: disk pack, which contains around 10 million words.
147: .sp
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.