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