File system access library.
This commit is contained in:
parent
be7cbb4ef2
commit
0c98da8bf8
16 changed files with 2967 additions and 0 deletions
114
src/libdiskfs/fsys.c
Normal file
114
src/libdiskfs/fsys.c
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
#include <u.h>
|
||||
#include <libc.h>
|
||||
#include <thread.h>
|
||||
#include <sunrpc.h>
|
||||
#include <nfs3.h>
|
||||
#include <diskfs.h>
|
||||
|
||||
int allowall;
|
||||
|
||||
static Fsys *(*opentab[])(Disk*) =
|
||||
{
|
||||
fsysopenffs,
|
||||
fsysopenkfs,
|
||||
fsysopenext2,
|
||||
fsysopenfat,
|
||||
};
|
||||
|
||||
Fsys*
|
||||
fsysopen(Disk *disk)
|
||||
{
|
||||
int i;
|
||||
Fsys *fsys;
|
||||
|
||||
for(i=0; i<nelem(opentab); i++)
|
||||
if((fsys = (*opentab[i])(disk)) != nil)
|
||||
return fsys;
|
||||
return nil;
|
||||
}
|
||||
|
||||
Block*
|
||||
fsysreadblock(Fsys *fsys, u64int blockno)
|
||||
{
|
||||
if(!fsys->_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);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue