#include #include #include #include #include #include int allowall; static Fsys *(*opentab[])(Disk*) = { fsysopenffs, fsysopenhfs, fsysopenkfs, fsysopenext2, fsysopenfat, }; Fsys* fsysopen(Disk *disk) { int i; Fsys *fsys; for(i=0; i_readblock){ werrstr("no read dispatch function"); return nil; } return (*fsys->_readblock)(fsys, blockno); } int fsyssync(Fsys *fsys) { if(disksync(fsys->disk) < 0) return -1; if(!fsys->_sync) return 0; return (*fsys->_sync)(fsys); } void fsysclose(Fsys *fsys) { if(!fsys->_close){ fprint(2, "no fsysClose\n"); abort(); } (*fsys->_close)(fsys); } Nfs3Status fsysroot(Fsys *fsys, Nfs3Handle *h) { if(!fsys->_root) return Nfs3ErrNxio; return (*fsys->_root)(fsys, h); } Nfs3Status fsyslookup(Fsys *fsys, SunAuthUnix *au, Nfs3Handle *h, char *name, Nfs3Handle *nh) { if(!fsys->_lookup) return Nfs3ErrNxio; return (*fsys->_lookup)(fsys, au, h, name, nh); } Nfs3Status fsysgetattr(Fsys *fsys, SunAuthUnix *au, Nfs3Handle *h, Nfs3Attr *attr) { if(!fsys->_getattr) return Nfs3ErrNxio; return (*fsys->_getattr)(fsys, au, h, attr); } Nfs3Status fsysreaddir(Fsys *fsys, SunAuthUnix *au, Nfs3Handle *h, u32int count, u64int cookie, uchar **e, u32int *ne, u1int *peof) { if(!fsys->_readdir) return Nfs3ErrNxio; return (*fsys->_readdir)(fsys, au, h, count, cookie, e, ne, peof); } Nfs3Status fsysreadfile(Fsys *fsys, SunAuthUnix *au, Nfs3Handle *h, u32int count, u64int offset, uchar **data, u32int *pcount, uchar *peof) { if(!fsys->_readfile) return Nfs3ErrNxio; return (*fsys->_readfile)(fsys, au, h, count, offset, data, pcount, peof); } Nfs3Status fsysreadlink(Fsys *fsys, SunAuthUnix *au, Nfs3Handle *h, char **plink) { if(!fsys->_readlink) return Nfs3ErrNxio; return (*fsys->_readlink)(fsys, au, h, plink); } Nfs3Status fsysaccess(Fsys *fsys, SunAuthUnix *au, Nfs3Handle *h, u32int want, u32int *got, Nfs3Attr *attr) { if(!fsys->_access) return Nfs3ErrNxio; return (*fsys->_access)(fsys, au, h, want, got, attr); }