1*11a9947fSrtm // on-disk file system format 2*11a9947fSrtm 3*11a9947fSrtm // second sector 4*11a9947fSrtm struct superblock{ 5*11a9947fSrtm int nblocks; 6*11a9947fSrtm int ninodes; 7*11a9947fSrtm }; 8*11a9947fSrtm 9*11a9947fSrtm #define NDIRECT 14 10*11a9947fSrtm 11*11a9947fSrtm // inodes start at the third sector 12*11a9947fSrtm // and blocks start at (ninodes * sizeof(dinode) + 511) / 512 13*11a9947fSrtm struct dinode { 14*11a9947fSrtm short type; 15*11a9947fSrtm short nlink; 16*11a9947fSrtm uint size; 17*11a9947fSrtm uint addrs[NDIRECT]; 18*11a9947fSrtm }; 19*11a9947fSrtm #define T_DIR 1 20*11a9947fSrtm #define T_FILE 2 21*11a9947fSrtm 22*11a9947fSrtm #define IPB (512 / sizeof(struct dinode)) 23*11a9947fSrtm 24*11a9947fSrtm struct dirent { 25*11a9947fSrtm ushort inum; 26*11a9947fSrtm char name[14]; 27*11a9947fSrtm }; 28*11a9947fSrtm 29