111a9947fSrtm // on-disk file system format 211a9947fSrtm 311a9947fSrtm // second sector 411a9947fSrtm struct superblock{ 511a9947fSrtm int nblocks; 611a9947fSrtm int ninodes; 711a9947fSrtm }; 811a9947fSrtm 911a9947fSrtm #define NDIRECT 14 1011a9947fSrtm 1111a9947fSrtm // inodes start at the third sector 1211a9947fSrtm // and blocks start at (ninodes * sizeof(dinode) + 511) / 512 1311a9947fSrtm struct dinode { 1411a9947fSrtm short type; 1511a9947fSrtm short nlink; 1611a9947fSrtm uint size; 1711a9947fSrtm uint addrs[NDIRECT]; 1811a9947fSrtm }; 1911a9947fSrtm #define T_DIR 1 2011a9947fSrtm #define T_FILE 2 2111a9947fSrtm 2211a9947fSrtm #define IPB (512 / sizeof(struct dinode)) 2311a9947fSrtm 24*9d3fb671Srtm #define DIRSIZ 14 25*9d3fb671Srtm 2611a9947fSrtm struct dirent { 2711a9947fSrtm ushort inum; 28*9d3fb671Srtm char name[DIRSIZ]; 2911a9947fSrtm }; 3011a9947fSrtm 31