xref: /xv6-public/fs.h (revision ea2909b6)
1 // on-disk file system format
2 
3 #define BSIZE 512  // block size
4 
5 // sector 1 (2nd sector)
6 struct superblock{
7   uint size;
8   uint nblocks;
9   uint ninodes;
10 };
11 
12 #define NADDRS NDIRECT+1
13 #define NDIRECT 12
14 #define INDIRECT 12
15 #define NINDIRECT (BSIZE / sizeof(uint))
16 #define MAXFILE (NDIRECT  + NINDIRECT)
17 
18 struct dinode {
19   short type;
20   short major;
21   short minor;
22   short nlink;
23   uint size;
24   uint addrs[NADDRS];
25 };
26 
27 #define T_DIR 1
28 #define T_FILE 2
29 #define T_DEV 3
30 
31 // sector 0 is unused, sector 1 is superblock, inodes start at sector 2
32 #define IPB (BSIZE / sizeof(struct dinode))
33 #define IBLOCK(inum) (inum / IPB + 2)   // start of inode
34 #define BPB (BSIZE*8)
35 #define BBLOCK(b,ninodes) (b/BPB + (ninodes/IPB) + 3)  // start of bitmap
36 
37 #define DIRSIZ 14
38 
39 struct dirent {
40   ushort inum;
41   char name[DIRSIZ];
42 };
43 
44 
45