1 typedef struct Ioclust Ioclust;
2 typedef struct Iobuf Iobuf;
3 typedef struct Isofile Isofile;
4 typedef struct Xdata Xdata;
5 typedef struct Xfile Xfile;
6 typedef struct Xfs Xfs;
7 typedef struct Xfsub Xfsub;
9 #pragma incomplete Isofile
26 long addr; /* in sectors; good to 8TB */
34 ulong tag; /* cache tag for eviction: 0 = data, 1 = metadata */
40 char* name; /* of underlying file */
44 int ref; /* attach count */
45 int dev; /* for read/write */
51 int (*attach)(Xfile*);
52 void (*clone)(Xfile*, Xfile*);
53 void (*walkup)(Xfile*);
54 void (*walk)(Xfile*, char*);
55 void (*open)(Xfile*, int);
56 void (*create)(Xfile*, char*, long, int);
57 long (*readdir)(Xfile*, uchar*, vlong, long);
58 long (*read)(Xfile*, char*, vlong, long);
59 long (*write)(Xfile*, char*, vlong, long);
60 void (*clunk)(Xfile*);
61 void (*remove)(Xfile*);
62 void (*stat)(Xfile*, Dir*);
63 void (*wstat)(Xfile*, Dir*);
68 Xdata* d; /* how to get the bits */
69 Xfsub* s; /* how to use them */
71 int issusp; /* follows system use sharing protocol */
72 long suspoff; /* if so, offset at which SUSP area begins */
73 int isrock; /* Rock Ridge format */
74 int isplan9; /* has Plan 9-specific directory info */
76 Isofile* ptr; /* private data */
81 Xfile* next; /* in fid hash bucket */
86 int len; /* of private data */
105 extern char Enonexist[]; /* file does not exist */
106 extern char Eperm[]; /* permission denied */
107 extern char Enofile[]; /* no file system specified */
108 extern char Eauth[]; /* authentication failed */
110 extern char *srvname;
111 extern char *deffile;
113 extern jmp_buf err_lab[];
115 extern char err_msg[];