123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- 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);
- int iremove(Icache*, ulong);
- int iupdate(Icache*, ulong, Qid);
- int iwrite(Icache*, Ibuf*);
- void ifree(Icache*, Ibuf*);
- void iinc(Icache*, Ibuf*);
|