61 lines
1.1 KiB
C
61 lines
1.1 KiB
C
typedef struct Ibuf Ibuf;
|
|
typedef struct Imap Imap;
|
|
typedef struct Icache Icache;
|
|
|
|
enum
|
|
{
|
|
Nicache= 64, /* number of inodes kept in pool */
|
|
};
|
|
|
|
/*
|
|
* a cached inode buffer
|
|
*/
|
|
struct Ibuf
|
|
{
|
|
Lru; /* must be first in structure */
|
|
int inuse; /* non-0 if in use */
|
|
ulong ino; /* index into inode table */
|
|
Inode inode; /* the inode contents */
|
|
};
|
|
|
|
/*
|
|
* in-core qid to inode mapping
|
|
*/
|
|
struct Imap
|
|
{
|
|
Lru; /* must be first in structure */
|
|
Qid qid;
|
|
Ibuf *b; /* cache buffer */
|
|
int inuse; /* non-0 if in use */
|
|
};
|
|
|
|
/*
|
|
* the inode cache
|
|
*/
|
|
struct Icache
|
|
{
|
|
Disk;
|
|
|
|
int nino; /* number of inodes */
|
|
ulong ib0; /* first inode block */
|
|
int nib; /* number of inode blocks */
|
|
int i2b; /* inodes to a block */
|
|
|
|
Ibuf ib[Nicache]; /* inode buffers */
|
|
Lru blru;
|
|
|
|
Imap *map; /* inode to qid mapping */
|
|
Lru mlru;
|
|
};
|
|
|
|
Ibuf* ialloc(Icache*, ulong);
|
|
Ibuf* iget(Icache*, Qid);
|
|
Ibuf* iread(Icache*, ulong);
|
|
int iformat(Icache*, int, ulong, char*, int, int);
|
|
int iinit(Icache*, int, int, char*);
|
|
int iremove(Icache*, ulong);
|
|
int iupdate(Icache*, ulong, Qid);
|
|
int iwrite(Icache*, Ibuf*);
|
|
void ifree(Icache*, Ibuf*);
|
|
void iinc(Icache*, Ibuf*);
|