xref: /xv6-public/fs.h (revision 24111398)
111a9947fSrtm // on-disk file system format
211a9947fSrtm 
3*24111398Skaashoek #define BSIZE 512  // block size
4*24111398Skaashoek 
5*24111398Skaashoek // sector 1 (2nd sector)
611a9947fSrtm struct superblock{
7*24111398Skaashoek   uint size;
8*24111398Skaashoek   uint nblocks;
9*24111398Skaashoek   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 
27*24111398Skaashoek // sector 0 is unused, sector 1 is superblock, inodes start at sector 2
28*24111398Skaashoek #define IPB (BSIZE / sizeof(struct dinode))
29*24111398Skaashoek #define IBLOCK(inum) (inum / IPB + 2)   // start of inode
30*24111398Skaashoek #define BPB (BSIZE*8)
31*24111398Skaashoek #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 };
3911a9947fSrtm 
40