xref: /plan9/sys/src/cmd/cfs/inode.h (revision 7c70c028d2d46a27a61ae88e6df0eb0935d9da7a)
13e12c5d1SDavid du Colombier typedef struct Ibuf	Ibuf;
23e12c5d1SDavid du Colombier typedef struct Imap	Imap;
33e12c5d1SDavid du Colombier typedef struct Icache	Icache;
43e12c5d1SDavid du Colombier 
53e12c5d1SDavid du Colombier enum
63e12c5d1SDavid du Colombier {
73e12c5d1SDavid du Colombier 	Nicache=	64,		/* number of inodes kept in pool */
83e12c5d1SDavid du Colombier };
93e12c5d1SDavid du Colombier 
103e12c5d1SDavid du Colombier /*
113e12c5d1SDavid du Colombier  *  a cached inode buffer
123e12c5d1SDavid du Colombier  */
133e12c5d1SDavid du Colombier struct Ibuf
143e12c5d1SDavid du Colombier {
153e12c5d1SDavid du Colombier 	Lru;			/* must be first in structure */
163e12c5d1SDavid du Colombier 	int	inuse;		/* non-0 if in use */
173e12c5d1SDavid du Colombier 	ulong	ino;		/* index into inode table */
183e12c5d1SDavid du Colombier 	Inode	inode;		/* the inode contents */
193e12c5d1SDavid du Colombier };
203e12c5d1SDavid du Colombier 
213e12c5d1SDavid du Colombier /*
223e12c5d1SDavid du Colombier  *  in-core qid to inode mapping
233e12c5d1SDavid du Colombier  */
243e12c5d1SDavid du Colombier struct Imap
253e12c5d1SDavid du Colombier {
263e12c5d1SDavid du Colombier 	Lru;			/* must be first in structure */
273e12c5d1SDavid du Colombier 	Qid	qid;
283e12c5d1SDavid du Colombier 	Ibuf	*b;		/* cache buffer */
293e12c5d1SDavid du Colombier 	int	inuse;		/* non-0 if in use */
303e12c5d1SDavid du Colombier };
313e12c5d1SDavid du Colombier 
323e12c5d1SDavid du Colombier /*
333e12c5d1SDavid du Colombier  *  the inode cache
343e12c5d1SDavid du Colombier  */
353e12c5d1SDavid du Colombier struct Icache
363e12c5d1SDavid du Colombier {
373e12c5d1SDavid du Colombier 	Disk;
383e12c5d1SDavid du Colombier 
393e12c5d1SDavid du Colombier 	int	nino;		/* number of inodes */
403e12c5d1SDavid du Colombier 	ulong	ib0;		/* first inode block */
413e12c5d1SDavid du Colombier 	int	nib;		/* number of inode blocks */
423e12c5d1SDavid du Colombier 	int	i2b;		/* inodes to a block */
433e12c5d1SDavid du Colombier 
443e12c5d1SDavid du Colombier 	Ibuf	ib[Nicache];	/* inode buffers */
453e12c5d1SDavid du Colombier 	Lru	blru;
463e12c5d1SDavid du Colombier 
473e12c5d1SDavid du Colombier 	Imap	*map;		/* inode to qid mapping */
483e12c5d1SDavid du Colombier 	Lru	mlru;
493e12c5d1SDavid du Colombier };
503e12c5d1SDavid du Colombier 
513e12c5d1SDavid du Colombier Ibuf*	ialloc(Icache*, ulong);
523e12c5d1SDavid du Colombier Ibuf*	iget(Icache*, Qid);
533e12c5d1SDavid du Colombier Ibuf*	iread(Icache*, ulong);
543e12c5d1SDavid du Colombier int	iformat(Icache*, int, ulong, char*, int, int);
55*7c70c028SDavid du Colombier int	iinit(Icache*, int, int, char*);
563e12c5d1SDavid du Colombier int	iremove(Icache*, ulong);
573e12c5d1SDavid du Colombier int	iupdate(Icache*, ulong, Qid);
583e12c5d1SDavid du Colombier int	iwrite(Icache*, Ibuf*);
593e12c5d1SDavid du Colombier void	ifree(Icache*, Ibuf*);
603e12c5d1SDavid du Colombier void	iinc(Icache*, Ibuf*);
61