2 /* affects on-disk structure */
5 SUPERMAGIC = 0x6E0DE51C,
15 /* affects just run-time behaviour */
19 BUFHASH = (1<<BUFHASHBITS)-1,
23 NOUID = (short)0x8000,
28 typedef struct Buf Buf;
29 typedef struct Dev Dev;
30 typedef struct BufReq BufReq;
31 typedef struct ThrData ThrData;
32 typedef struct Superblock Superblock;
33 typedef struct Dentry Dentry;
34 typedef struct Chan Chan;
35 typedef struct FLoc FLoc;
36 typedef struct Loc Loc;
37 typedef struct User User;
39 #pragma incomplete struct User
40 #pragma varargck type "T" int
41 #pragma varargck type "T" uint
72 uvlong size; /* bytes for files and blocks for dirs */
80 DENTRYSIZ = NAMELEN + 4 * sizeof(ushort) + 13 + (3 + NDIRECT + NINDIRECT) * sizeof(uvlong),
81 DEPERBLK = RBLOCK / DENTRYSIZ,
82 OFFPERBLK = RBLOCK / 12,
83 REFPERBLK = RBLOCK / 3,
95 BWRITE = 1, /* used only for the worker */
96 BWRIM = 2, /* write immediately after putbuf */
97 BDELWRI = 4, /* write delayed */
106 uvlong offs[OFFPERBLK];
107 ulong refs[REFPERBLK];
110 /* do not use anything below (for the bufproc only) */
117 ulong callerpc; /* debugging */
129 Buf buf[BUFHASH+1]; /* doubly-linked list */
175 Loc *rootloc, *dumprootloc;
215 extern Rendez chanre;
219 extern char Enotadir[];
220 extern char Enoent[];
221 extern char Einval[];
223 extern char Eexists[];
224 extern char Elocked[];
226 enum { /* getblk modes */
233 #define HOWMANY(a, b) (((a)+((b)-1))/(b))
234 #define ROUNDUP(a, b) (HOWMANY(a,b)*(b))