.oh '11/3/70''FILE SYSTEM(V)' .ta 18 21 24 NAME format of file system .sp SYNOPSIS -- .sp DESCRIPTION .in 8 The RB09 fixed head disk has 8,000 64-word blocks (100 tracks of 80 bloocks) on each of its two surfaces. The Unix filesystem is stored in the first 80 tracks of the second surface (physical blocks 8,000 to 14,399 -- physical tracks 100 to 179) and numbers them from logical block 0 to logical block 6,399. .sp The Unix filesystem is divided into 6,400 logical 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). .sp Block 1 on the filesystem is unused. (?) .sp 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 12-word i-nodes per block. Certain i-nodes are reserved for special files, directories and devices: .sp .nf 1 The core file written by "sys save" or a bad system call 2 The "dd" directory directory 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 "display" (GRAPHIC-2) special file 12 The "pptout" (paper tape punch) special file .fi .sp There is only one file system which is always mounted; it resides on the RB disk. .sp The last twenty tracks of the second disk surface are use for bootable images and swapping: .sp Each physical track from 180 to 189 contains a bootable system image of 3K words. .sp Each physical track from 190 to 199 is used to swap a user process (4K words plus a 64-word swapable "userdata" area). .sp 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: .sp .nf 0 flags (see below) 1 first indirect block or data block ... 7 seventh indirect block or data block 8 user ID of owner 9 link count 10 size in words 11 unique value assigned at creation .sp .in 8 The flags are as follows: .sp 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 .fi .in 8 .sp 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 become unallocatable, but will not cause active nodes to be reused. .sp 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. .sp 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 corresponding to b. .sp 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. .in 0 .sp FILES -- .sp SEE ALSO format of directories .sp DIAGNOSTICS -- .sp BUGS -- .sp OWNER ken