Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
typedef struct Ibuf	Ibuf;
2
typedef struct Imap	Imap;
3
typedef struct Icache	Icache;
4
 
5
enum
6
{
7
	Nicache=	64,		/* number of inodes kept in pool */
8
};
9
 
10
/*
11
 *  a cached inode buffer
12
 */
13
struct Ibuf
14
{
15
	Lru;			/* must be first in structure */
16
	int	inuse;		/* non-0 if in use */
17
	ulong	ino;		/* index into inode table */
18
	Inode	inode;		/* the inode contents */
19
};
20
 
21
/*
22
 *  in-core qid to inode mapping
23
 */
24
struct Imap
25
{
26
	Lru;			/* must be first in structure */
27
	Qid	qid;
28
	Ibuf	*b;		/* cache buffer */
29
	int	inuse;		/* non-0 if in use */
30
};
31
 
32
/*
33
 *  the inode cache
34
 */
35
struct Icache
36
{
37
	Disk;
38
 
39
	int	nino;		/* number of inodes */
40
	ulong	ib0;		/* first inode block */
41
	int	nib;		/* number of inode blocks */
42
	int	i2b;		/* inodes to a block */
43
 
44
	Ibuf	ib[Nicache];	/* inode buffers */
45
	Lru	blru;
46
 
47
	Imap	*map;		/* inode to qid mapping */
48
	Lru	mlru;
49
};
50
 
51
Ibuf*	ialloc(Icache*, ulong);
52
Ibuf*	iget(Icache*, Qid);
53
Ibuf*	iread(Icache*, ulong);
54
int	iformat(Icache*, int, ulong, char*, int, int);
55
int	iinit(Icache*, int, int, char*);
56
int	iremove(Icache*, ulong);
57
int	iupdate(Icache*, ulong, Qid);
58
int	iwrite(Icache*, Ibuf*);
59
void	ifree(Icache*, Ibuf*);
60
void	iinc(Icache*, Ibuf*);