Skip to content
Snippets Groups Projects
fs.h 816 B
Newer Older
rtm's avatar
rtm committed
// on-disk file system format

kaashoek's avatar
kaashoek committed
#define BSIZE 512  // block size

// sector 1 (2nd sector)
rtm's avatar
rtm committed
struct superblock{
kaashoek's avatar
kaashoek committed
  uint size;
  uint nblocks;
  uint ninodes;
rtm's avatar
rtm committed
};

rtm's avatar
rtm committed
#define NADDRS (NDIRECT+1)
kaashoek's avatar
kaashoek committed
#define NDIRECT 12
#define INDIRECT 12
#define NINDIRECT (BSIZE / sizeof(uint))
#define MAXFILE (NDIRECT  + NINDIRECT)
rtm's avatar
rtm committed

struct dinode {
  short type;
kaashoek's avatar
kaashoek committed
  short major;
  short minor;
rtm's avatar
rtm committed
  short nlink;
  uint size;
kaashoek's avatar
kaashoek committed
  uint addrs[NADDRS];
rtm's avatar
rtm committed
};
kaashoek's avatar
kaashoek committed

rtm's avatar
rtm committed
#define T_DIR 1
#define T_FILE 2
kaashoek's avatar
kaashoek committed
#define T_DEV 3
rtm's avatar
rtm committed

kaashoek's avatar
kaashoek committed
// sector 0 is unused, sector 1 is superblock, inodes start at sector 2
#define IPB (BSIZE / sizeof(struct dinode))
#define IBLOCK(inum) (inum / IPB + 2)   // start of inode
#define BPB (BSIZE*8)
#define BBLOCK(b,ninodes) (b/BPB + (ninodes/IPB) + 3)  // start of bitmap
rtm's avatar
rtm committed

rtm's avatar
rtm committed
#define DIRSIZ 14

rtm's avatar
rtm committed
struct dirent {
  ushort inum;
rtm's avatar
rtm committed
  char name[DIRSIZ];
rtm's avatar
rtm committed
};