111a9947fSrtm // on-disk file system format 211a9947fSrtm 311a9947fSrtm // second sector 411a9947fSrtm struct superblock{ 511a9947fSrtm int nblocks; 611a9947fSrtm int ninodes; 711a9947fSrtm }; 811a9947fSrtm 9*e8d11c2eSkaashoek #define NDIRECT 13 1011a9947fSrtm 1111a9947fSrtm // inodes start at the third sector 1211a9947fSrtm // and blocks start at (ninodes * sizeof(dinode) + 511) / 512 1311a9947fSrtm struct dinode { 1411a9947fSrtm short type; 15*e8d11c2eSkaashoek short major; 16*e8d11c2eSkaashoek short minor; 1711a9947fSrtm short nlink; 1811a9947fSrtm uint size; 1911a9947fSrtm uint addrs[NDIRECT]; 2011a9947fSrtm }; 21*e8d11c2eSkaashoek 2211a9947fSrtm #define T_DIR 1 2311a9947fSrtm #define T_FILE 2 24*e8d11c2eSkaashoek #define T_DEV 3 2511a9947fSrtm 2611a9947fSrtm #define IPB (512 / sizeof(struct dinode)) 2711a9947fSrtm 289d3fb671Srtm #define DIRSIZ 14 299d3fb671Srtm 3011a9947fSrtm struct dirent { 3111a9947fSrtm ushort inum; 329d3fb671Srtm char name[DIRSIZ]; 3311a9947fSrtm }; 3411a9947fSrtm 35