void*	emalloc(int);
void*	erealloc(void*,int);
char*	estrdup(char*);
void	bufinit(int);
Buf*	getbuf(Dev *, uint64_t, int, int);
void	putbuf(Buf *);
void	sync(int);
void	pack(Buf *, uint8_t *);
void	unpack(Buf *, uint8_t *);
Dev*	newdev(char *);
ThrData*	getthrdata(void);
Fs*	initfs(Dev *, int, int);
Dentry*	getdent(FLoc *, Buf *);
int	getfree(Fs *, uint64_t *);
int	putfree(Fs *, uint64_t);
Chan*	chanattach(Fs *, int);
Chan*	chanclone(Chan *);
int	chanwalk(Chan *, char *);
int	chancreat(Chan *, char *, int, int);
int	chanopen(Chan *, int mode);
int	chanwrite(Chan *, void *, uint32_t, uint64_t);
int	chanread(Chan *, void *, uint32_t, uint64_t);
int	chanstat(Chan *, Dir *);
int	chanwstat(Chan *, Dir *);
int	permcheck(Fs *, Dentry *, short, int);
char *	uid2name(Fs *, short, char *);
int	name2uid(Fs *, char *, short *);
void	start9p(char *, char **, int);
int	chanclunk(Chan *);
int	chanremove(Chan *);
int	getblk(Fs *, FLoc *, Buf *, uint64_t, uint64_t *, int);
void	initcons(char *);
void	shutdown(void);
int	fsdump(Fs *);
int	willmodify(Fs *, Loc *, int);
void	chbegin(Chan *);
void	chend(Chan *);
int	newqid(Fs *, uint64_t *);
Loc *	getloc(Fs *, FLoc, Loc *);
int	haveloc(Fs *, uint64_t, int, Loc *);
Loc *	cloneloc(Fs *, Loc *);
void	putloc(Fs *, Loc *, int);
int	findentry(Fs *, FLoc *, Buf *, char *, FLoc *, int);
void	modified(Chan *, Dentry *);
int	trunc(Fs *, FLoc *, Buf *, uint64_t);
int	dprint(char *fmt, ...);
int	delete(Fs *, FLoc *, Buf *);
int	chref(Fs *, uint64_t, int);
int	newentry(Fs *, Loc *, Buf *, char *, FLoc *, int);
int	namevalid(char *);
int	usersload(Fs *, Chan *);
int	userssave(Fs *, Chan *);
int	ingroup(Fs *, short, short, int);
void	workerinit(void);
void	writeusers(Fs *);
void	readusers(Fs *);
