kern

diff src/fs.h @ 94:b3351d018ac6

read/write superblock, get/put inode
author John Tsiombikas <nuclear@member.fsf.org>
date Sun, 11 Dec 2011 11:12:30 +0200
parents 083849df660b
children ec62cbe00b55
line diff
     1.1 --- a/src/fs.h	Sun Dec 11 10:17:58 2011 +0200
     1.2 +++ b/src/fs.h	Sun Dec 11 11:12:30 2011 +0200
     1.3 @@ -17,6 +17,22 @@
     1.4  typedef uint32_t dev_t;
     1.5  typedef uint32_t blkid;
     1.6  
     1.7 +
     1.8 +/* 20 direct blocks + 10 attributes + 2 indirect = 128 bytes per inode */
     1.9 +#define NDIRBLK	20
    1.10 +struct inode {
    1.11 +	int ino;
    1.12 +	int uid, gid, mode;
    1.13 +	int nlink;
    1.14 +	dev_t dev;
    1.15 +	uint32_t atime, ctime, mtime;
    1.16 +	uint32_t size;
    1.17 +	blkid blk[NDIRBLK];	/* direct blocks */
    1.18 +	blkid ind;			/* indirect */
    1.19 +	blkid dind;			/* double-indirect */
    1.20 +} __attribute__((packed));
    1.21 +
    1.22 +
    1.23  struct superblock {
    1.24  	uint32_t magic;	/* magic number */
    1.25  	int ver;		/* filesystem version */
    1.26 @@ -34,33 +50,19 @@
    1.27  	blkid bm_start;
    1.28  	unsigned int bm_count;
    1.29  
    1.30 -	int root_ino;	/* root direcotry inode */
    1.31 +	int root_ino;	/* root direcotry inode number */
    1.32  
    1.33  	/* the following are valid only at runtime, ignored on disk */
    1.34  	uint32_t *ibm;	/* in-memory inode bitmap */
    1.35  	uint32_t *bm;	/* in-memory block bitmap */
    1.36 +	struct inode *root;	/* in-memory root inode */
    1.37  
    1.38  } __attribute__((packed));
    1.39  
    1.40  
    1.41 -/* 20 direct blocks + 10 attributes + 2 indirect = 128 bytes per inode */
    1.42 -#define NDIRBLK	20
    1.43 -struct inode {
    1.44 -	int ino;
    1.45 -	int uid, gid, mode;
    1.46 -	int nlink;
    1.47 -	dev_t dev;
    1.48 -	uint32_t atime, ctime, mtime;
    1.49 -	uint32_t size;
    1.50 -	blkid blk[NDIRBLK];	/* direct blocks */
    1.51 -	blkid ind;			/* indirect */
    1.52 -	blkid dind;			/* double-indirect */
    1.53 -} __attribute__((packed));
    1.54 -
    1.55  
    1.56  struct filesys {
    1.57  	struct block_device *bdev;
    1.58 -	struct partition part;
    1.59  
    1.60  	struct superblock *sb;
    1.61  
    1.62 @@ -69,6 +71,7 @@
    1.63  
    1.64  /* defined in fs.c */
    1.65  int openfs(struct filesys *fs, dev_t dev);
    1.66 +void closefs(struct filesys *fs);
    1.67  int find_inode(const char *path);
    1.68  
    1.69  /* defined in fs_sys.c */