111a9947fSrtm // on-disk file system format 211a9947fSrtm 324111398Skaashoek #define BSIZE 512 // block size 424111398Skaashoek 524111398Skaashoek // sector 1 (2nd sector) 611a9947fSrtm struct superblock{ 724111398Skaashoek uint size; 824111398Skaashoek uint nblocks; 924111398Skaashoek uint ninodes; 1011a9947fSrtm }; 1111a9947fSrtm 12e8d11c2eSkaashoek #define NDIRECT 13 1311a9947fSrtm 1411a9947fSrtm struct dinode { 1511a9947fSrtm short type; 16e8d11c2eSkaashoek short major; 17e8d11c2eSkaashoek short minor; 1811a9947fSrtm short nlink; 1911a9947fSrtm uint size; 2011a9947fSrtm uint addrs[NDIRECT]; 2111a9947fSrtm }; 22e8d11c2eSkaashoek 2311a9947fSrtm #define T_DIR 1 2411a9947fSrtm #define T_FILE 2 25e8d11c2eSkaashoek #define T_DEV 3 2611a9947fSrtm 2724111398Skaashoek // sector 0 is unused, sector 1 is superblock, inodes start at sector 2 2824111398Skaashoek #define IPB (BSIZE / sizeof(struct dinode)) 2924111398Skaashoek #define IBLOCK(inum) (inum / IPB + 2) // start of inode 3024111398Skaashoek #define BPB (BSIZE*8) 3124111398Skaashoek #define BBLOCK(b,ninodes) (b/BPB + (ninodes/IPB) + 3) // start of bitmap 3211a9947fSrtm 339d3fb671Srtm #define DIRSIZ 14 349d3fb671Srtm 3511a9947fSrtm struct dirent { 3611a9947fSrtm ushort inum; 379d3fb671Srtm char name[DIRSIZ]; 3811a9947fSrtm }; 39*e958c538Skaashoek 40*e958c538Skaashoek 41