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 9*d7aba6c3SDavid du Colombier enum 10*d7aba6c3SDavid du Colombier { 11*d7aba6c3SDavid du Colombier STACK = 32*1024, 12*d7aba6c3SDavid du Colombier }; 13*d7aba6c3SDavid du Colombier 145e96a66cSDavid du Colombier /* modes */ 155e96a66cSDavid du Colombier 165e96a66cSDavid du Colombier enum { 175e96a66cSDavid du Colombier OReadOnly, 185e96a66cSDavid du Colombier OReadWrite, 195e96a66cSDavid du Colombier OOverWrite, 205e96a66cSDavid du Colombier }; 215e96a66cSDavid du Colombier 2223e56024SDavid du Colombier extern char *currfsysname; 231bdadbfaSDavid du Colombier extern char *foptname; 2423e56024SDavid du Colombier 255e96a66cSDavid du Colombier void fsClose(Fs*); 2600580da5SDavid du Colombier int fsEpochLow(Fs*, u32int); 275e96a66cSDavid du Colombier File *fsGetRoot(Fs*); 2800580da5SDavid du Colombier int fsHalt(Fs*); 29*d7aba6c3SDavid du Colombier Fs *fsOpen(char*, VtConn*, long, int); 3000580da5SDavid du Colombier int fsRedial(Fs*, char*); 3100580da5SDavid du Colombier void fsSnapshotCleanup(Fs*, u32int); 32c3c4501eSDavid du Colombier int fsSnapshot(Fs*, char*, char*, int); 33dc5a79c1SDavid du Colombier void fsSnapshotRemove(Fs*); 345e96a66cSDavid du Colombier int fsSync(Fs*); 3581cf8742SDavid du Colombier int fsUnhalt(Fs*); 365e96a66cSDavid du Colombier int fsVac(Fs*, char*, uchar[VtScoreSize]); 375e96a66cSDavid du Colombier 3800580da5SDavid du Colombier void deeClose(DirEntryEnum*); 395e96a66cSDavid du Colombier DirEntryEnum *deeOpen(File*); 405e96a66cSDavid du Colombier int deeRead(DirEntryEnum*, DirEntry*); 4100580da5SDavid du Colombier int fileClri(File*, char*, char*); 4200580da5SDavid du Colombier int fileClriPath(Fs*, char*, char*); 4300580da5SDavid du Colombier File *fileCreate(File*, char*, ulong, char*); 4400580da5SDavid du Colombier int fileDecRef(File*); 4500580da5SDavid du Colombier int fileGetDir(File*, DirEntry*); 4600580da5SDavid du Colombier uvlong fileGetId(File*); 4700580da5SDavid du Colombier ulong fileGetMcount(File*); 4800580da5SDavid du Colombier ulong fileGetMode(File*); 4900580da5SDavid du Colombier File *fileGetParent(File*); 5000580da5SDavid du Colombier int fileGetSize(File*, uvlong*); 5100580da5SDavid du Colombier File *fileIncRef(File*); 5200580da5SDavid du Colombier int fileIsDir(File*); 536bbfed0dSDavid du Colombier int fileIsTemporary(File*); 546bbfed0dSDavid du Colombier int fileIsAppend(File*); 556bbfed0dSDavid du Colombier int fileIsExclusive(File*); 5600580da5SDavid du Colombier int fileIsRoFs(File*); 5700580da5SDavid du Colombier int fileIsRoot(File*); 5800580da5SDavid du Colombier int fileMapBlock(File*, ulong, uchar[VtScoreSize], ulong); 5900580da5SDavid du Colombier int fileMetaFlush(File*, int); 6000580da5SDavid du Colombier char *fileName(File *f); 6100580da5SDavid du Colombier File *fileOpen(Fs*, char*); 6200580da5SDavid du Colombier int fileRead(File*, void *, int, vlong); 6300580da5SDavid du Colombier int fileRemove(File*, char*); 6400580da5SDavid du Colombier int fileSetDir(File*, DirEntry*, char*); 6500580da5SDavid du Colombier int fileSetQidSpace(File*, u64int, u64int); 6600580da5SDavid du Colombier int fileSetSize(File*, uvlong); 6700580da5SDavid du Colombier int fileSync(File*); 6800580da5SDavid du Colombier int fileTruncate(File*, char*); 6900580da5SDavid du Colombier File *fileWalk(File*, char*); 7000580da5SDavid du Colombier File *_fileWalk(File*, char*, int); 715e96a66cSDavid du Colombier int fileWalkSources(File*); 7200580da5SDavid du Colombier int fileWrite(File*, void *, int, vlong, char*); 73