131085bb4Srsc // On-disk file system format. 28e88f9e2Srtm // Both the kernel and user programs use this header file. 331085bb4Srsc 431085bb4Srsc // Block 0 is unused. 531085bb4Srsc // Block 1 is super block. 631085bb4Srsc // Inodes start at block 2. 711a9947fSrtm 82ce40d70Srtm #define ROOTINO 1 // root i-number 924111398Skaashoek #define BSIZE 512 // block size 1024111398Skaashoek 1131085bb4Srsc // File system super block 1211a9947fSrtm struct superblock { 13d911d83cSrsc uint size; // Size of file system image (blocks) 14d911d83cSrsc uint nblocks; // Number of data blocks 1531085bb4Srsc uint ninodes; // Number of inodes. 16*13a96baeSFrans Kaashoek uint nlog; // Number of log blocks 1711a9947fSrtm }; 1811a9947fSrtm 19ea2909b6Skaashoek #define NDIRECT 12 20ea2909b6Skaashoek #define NINDIRECT (BSIZE / sizeof(uint)) 21ea2909b6Skaashoek #define MAXFILE (NDIRECT + NINDIRECT) 2211a9947fSrtm 2331085bb4Srsc // On-disk inode structure 2411a9947fSrtm struct dinode { 2531085bb4Srsc short type; // File type 2631085bb4Srsc short major; // Major device number (T_DEV only) 2731085bb4Srsc short minor; // Minor device number (T_DEV only) 2831085bb4Srsc short nlink; // Number of links to inode in file system 2931085bb4Srsc uint size; // Size of file (bytes) 30ba6cd8a6Srsc uint addrs[NDIRECT+1]; // Data block addresses 3111a9947fSrtm }; 32e8d11c2eSkaashoek 3331085bb4Srsc // Inodes per block. 3424111398Skaashoek #define IPB (BSIZE / sizeof(struct dinode)) 3531085bb4Srsc 3631085bb4Srsc // Block containing inode i 3731085bb4Srsc #define IBLOCK(i) ((i) / IPB + 2) 3831085bb4Srsc 3931085bb4Srsc // Bitmap bits per block 4024111398Skaashoek #define BPB (BSIZE*8) 4131085bb4Srsc 4231085bb4Srsc // Block containing bit for block b 4331085bb4Srsc #define BBLOCK(b, ninodes) (b/BPB + (ninodes)/IPB + 3) 4411a9947fSrtm 4541948359Srsc // Directory is a file containing a sequence of dirent structures. 469d3fb671Srtm #define DIRSIZ 14 479d3fb671Srtm 4811a9947fSrtm struct dirent { 4911a9947fSrtm ushort inum; 509d3fb671Srtm char name[DIRSIZ]; 5111a9947fSrtm }; 52e958c538Skaashoek 53