15e96a66cSDavid du Colombier typedef struct Fs Fs; 25e96a66cSDavid du Colombier typedef struct File File; 35e96a66cSDavid du Colombier typedef struct DirEntryEnum DirEntryEnum; 45e96a66cSDavid du Colombier 512fd1c83SDavid du Colombier #pragma incomplete Fs 612fd1c83SDavid du Colombier #pragma incomplete File 712fd1c83SDavid du Colombier #pragma incomplete DirEntryEnum 812fd1c83SDavid du Colombier 95e96a66cSDavid du Colombier /* modes */ 105e96a66cSDavid du Colombier 115e96a66cSDavid du Colombier enum { 125e96a66cSDavid du Colombier OReadOnly, 135e96a66cSDavid du Colombier OReadWrite, 145e96a66cSDavid du Colombier OOverWrite, 155e96a66cSDavid du Colombier }; 165e96a66cSDavid du Colombier 1723e56024SDavid du Colombier extern char *currfsysname; 181bdadbfaSDavid du Colombier extern char *foptname; 1923e56024SDavid du Colombier 205e96a66cSDavid du Colombier void fsClose(Fs*); 2100580da5SDavid du Colombier int fsEpochLow(Fs*, u32int); 225e96a66cSDavid du Colombier File *fsGetRoot(Fs*); 2300580da5SDavid du Colombier int fsHalt(Fs*); 2400580da5SDavid du Colombier Fs *fsOpen(char*, VtSession*, long, int); 2500580da5SDavid du Colombier int fsRedial(Fs*, char*); 2600580da5SDavid du Colombier void fsSnapshotCleanup(Fs*, u32int); 27c3c4501eSDavid du Colombier int fsSnapshot(Fs*, char*, char*, int); 28dc5a79c1SDavid du Colombier void fsSnapshotRemove(Fs*); 295e96a66cSDavid du Colombier int fsSync(Fs*); 3081cf8742SDavid du Colombier int fsUnhalt(Fs*); 315e96a66cSDavid du Colombier int fsVac(Fs*, char*, uchar[VtScoreSize]); 325e96a66cSDavid du Colombier 3300580da5SDavid du Colombier void deeClose(DirEntryEnum*); 345e96a66cSDavid du Colombier DirEntryEnum *deeOpen(File*); 355e96a66cSDavid du Colombier int deeRead(DirEntryEnum*, DirEntry*); 3600580da5SDavid du Colombier int fileClri(File*, char*, char*); 3700580da5SDavid du Colombier int fileClriPath(Fs*, char*, char*); 3800580da5SDavid du Colombier File *fileCreate(File*, char*, ulong, char*); 3900580da5SDavid du Colombier int fileDecRef(File*); 4000580da5SDavid du Colombier int fileGetDir(File*, DirEntry*); 4100580da5SDavid du Colombier uvlong fileGetId(File*); 4200580da5SDavid du Colombier ulong fileGetMcount(File*); 4300580da5SDavid du Colombier ulong fileGetMode(File*); 4400580da5SDavid du Colombier File *fileGetParent(File*); 4500580da5SDavid du Colombier int fileGetSize(File*, uvlong*); 4600580da5SDavid du Colombier File *fileIncRef(File*); 4700580da5SDavid du Colombier int fileIsDir(File*); 48*6bbfed0dSDavid du Colombier int fileIsTemporary(File*); 49*6bbfed0dSDavid du Colombier int fileIsAppend(File*); 50*6bbfed0dSDavid du Colombier int fileIsExclusive(File*); 5100580da5SDavid du Colombier int fileIsRoFs(File*); 5200580da5SDavid du Colombier int fileIsRoot(File*); 5300580da5SDavid du Colombier int fileMapBlock(File*, ulong, uchar[VtScoreSize], ulong); 5400580da5SDavid du Colombier int fileMetaFlush(File*, int); 5500580da5SDavid du Colombier char *fileName(File *f); 5600580da5SDavid du Colombier File *fileOpen(Fs*, char*); 5700580da5SDavid du Colombier int fileRead(File*, void *, int, vlong); 5800580da5SDavid du Colombier int fileRemove(File*, char*); 5900580da5SDavid du Colombier int fileSetDir(File*, DirEntry*, char*); 6000580da5SDavid du Colombier int fileSetQidSpace(File*, u64int, u64int); 6100580da5SDavid du Colombier int fileSetSize(File*, uvlong); 6200580da5SDavid du Colombier int fileSync(File*); 6300580da5SDavid du Colombier int fileTruncate(File*, char*); 6400580da5SDavid du Colombier File *fileWalk(File*, char*); 6500580da5SDavid du Colombier File *_fileWalk(File*, char*, int); 665e96a66cSDavid du Colombier int fileWalkSources(File*); 6700580da5SDavid du Colombier int fileWrite(File*, void *, int, vlong, char*); 68