Blame


1 0c98da8b 2005-07-13 devnull #include <u.h>
2 0c98da8b 2005-07-13 devnull #include <libc.h>
3 0c98da8b 2005-07-13 devnull #include <thread.h>
4 0c98da8b 2005-07-13 devnull #include <sunrpc.h>
5 0c98da8b 2005-07-13 devnull #include <nfs3.h>
6 0c98da8b 2005-07-13 devnull #include <diskfs.h>
7 0c98da8b 2005-07-13 devnull
8 0c98da8b 2005-07-13 devnull int allowall;
9 0c98da8b 2005-07-13 devnull
10 0c98da8b 2005-07-13 devnull static Fsys *(*opentab[])(Disk*) =
11 0c98da8b 2005-07-13 devnull {
12 0c98da8b 2005-07-13 devnull fsysopenffs,
13 0c98da8b 2005-07-13 devnull fsysopenkfs,
14 0c98da8b 2005-07-13 devnull fsysopenext2,
15 0c98da8b 2005-07-13 devnull fsysopenfat,
16 0c98da8b 2005-07-13 devnull };
17 0c98da8b 2005-07-13 devnull
18 0c98da8b 2005-07-13 devnull Fsys*
19 0c98da8b 2005-07-13 devnull fsysopen(Disk *disk)
20 0c98da8b 2005-07-13 devnull {
21 0c98da8b 2005-07-13 devnull int i;
22 0c98da8b 2005-07-13 devnull Fsys *fsys;
23 0c98da8b 2005-07-13 devnull
24 0c98da8b 2005-07-13 devnull for(i=0; i<nelem(opentab); i++)
25 0c98da8b 2005-07-13 devnull if((fsys = (*opentab[i])(disk)) != nil)
26 0c98da8b 2005-07-13 devnull return fsys;
27 0c98da8b 2005-07-13 devnull return nil;
28 0c98da8b 2005-07-13 devnull }
29 0c98da8b 2005-07-13 devnull
30 0c98da8b 2005-07-13 devnull Block*
31 0c98da8b 2005-07-13 devnull fsysreadblock(Fsys *fsys, u64int blockno)
32 0c98da8b 2005-07-13 devnull {
33 0c98da8b 2005-07-13 devnull if(!fsys->_readblock){
34 0c98da8b 2005-07-13 devnull werrstr("no read dispatch function");
35 0c98da8b 2005-07-13 devnull return nil;
36 0c98da8b 2005-07-13 devnull }
37 0c98da8b 2005-07-13 devnull return (*fsys->_readblock)(fsys, blockno);
38 0c98da8b 2005-07-13 devnull }
39 0c98da8b 2005-07-13 devnull
40 0c98da8b 2005-07-13 devnull int
41 0c98da8b 2005-07-13 devnull fsyssync(Fsys *fsys)
42 0c98da8b 2005-07-13 devnull {
43 0c98da8b 2005-07-13 devnull if(disksync(fsys->disk) < 0)
44 0c98da8b 2005-07-13 devnull return -1;
45 0c98da8b 2005-07-13 devnull if(!fsys->_sync)
46 0c98da8b 2005-07-13 devnull return 0;
47 0c98da8b 2005-07-13 devnull return (*fsys->_sync)(fsys);
48 0c98da8b 2005-07-13 devnull }
49 0c98da8b 2005-07-13 devnull
50 0c98da8b 2005-07-13 devnull void
51 0c98da8b 2005-07-13 devnull fsysclose(Fsys *fsys)
52 0c98da8b 2005-07-13 devnull {
53 0c98da8b 2005-07-13 devnull if(!fsys->_close){
54 0c98da8b 2005-07-13 devnull fprint(2, "no fsysClose\n");
55 0c98da8b 2005-07-13 devnull abort();
56 0c98da8b 2005-07-13 devnull }
57 0c98da8b 2005-07-13 devnull (*fsys->_close)(fsys);
58 0c98da8b 2005-07-13 devnull }
59 0c98da8b 2005-07-13 devnull
60 0c98da8b 2005-07-13 devnull Nfs3Status
61 0c98da8b 2005-07-13 devnull fsysroot(Fsys *fsys, Nfs3Handle *h)
62 0c98da8b 2005-07-13 devnull {
63 0c98da8b 2005-07-13 devnull if(!fsys->_root)
64 0c98da8b 2005-07-13 devnull return Nfs3ErrNxio;
65 0c98da8b 2005-07-13 devnull return (*fsys->_root)(fsys, h);
66 0c98da8b 2005-07-13 devnull }
67 0c98da8b 2005-07-13 devnull
68 0c98da8b 2005-07-13 devnull Nfs3Status
69 0c98da8b 2005-07-13 devnull fsyslookup(Fsys *fsys, SunAuthUnix *au, Nfs3Handle *h, char *name, Nfs3Handle *nh)
70 0c98da8b 2005-07-13 devnull {
71 0c98da8b 2005-07-13 devnull if(!fsys->_lookup)
72 0c98da8b 2005-07-13 devnull return Nfs3ErrNxio;
73 0c98da8b 2005-07-13 devnull return (*fsys->_lookup)(fsys, au, h, name, nh);
74 0c98da8b 2005-07-13 devnull }
75 0c98da8b 2005-07-13 devnull
76 0c98da8b 2005-07-13 devnull Nfs3Status
77 0c98da8b 2005-07-13 devnull fsysgetattr(Fsys *fsys, SunAuthUnix *au, Nfs3Handle *h, Nfs3Attr *attr)
78 0c98da8b 2005-07-13 devnull {
79 0c98da8b 2005-07-13 devnull if(!fsys->_getattr)
80 0c98da8b 2005-07-13 devnull return Nfs3ErrNxio;
81 0c98da8b 2005-07-13 devnull return (*fsys->_getattr)(fsys, au, h, attr);
82 0c98da8b 2005-07-13 devnull }
83 0c98da8b 2005-07-13 devnull
84 0c98da8b 2005-07-13 devnull Nfs3Status
85 0c98da8b 2005-07-13 devnull fsysreaddir(Fsys *fsys, SunAuthUnix *au, Nfs3Handle *h, u32int count, u64int cookie, uchar **e, u32int *ne, u1int *peof)
86 0c98da8b 2005-07-13 devnull {
87 0c98da8b 2005-07-13 devnull if(!fsys->_readdir)
88 0c98da8b 2005-07-13 devnull return Nfs3ErrNxio;
89 0c98da8b 2005-07-13 devnull return (*fsys->_readdir)(fsys, au, h, count, cookie, e, ne, peof);
90 0c98da8b 2005-07-13 devnull }
91 0c98da8b 2005-07-13 devnull
92 0c98da8b 2005-07-13 devnull Nfs3Status
93 0c98da8b 2005-07-13 devnull fsysreadfile(Fsys *fsys, SunAuthUnix *au, Nfs3Handle *h, u32int count, u64int offset, uchar **data, u32int *pcount, uchar *peof)
94 0c98da8b 2005-07-13 devnull {
95 0c98da8b 2005-07-13 devnull if(!fsys->_readfile)
96 0c98da8b 2005-07-13 devnull return Nfs3ErrNxio;
97 0c98da8b 2005-07-13 devnull return (*fsys->_readfile)(fsys, au, h, count, offset, data, pcount, peof);
98 0c98da8b 2005-07-13 devnull }
99 0c98da8b 2005-07-13 devnull
100 0c98da8b 2005-07-13 devnull Nfs3Status
101 0c98da8b 2005-07-13 devnull fsysreadlink(Fsys *fsys, SunAuthUnix *au, Nfs3Handle *h, char **plink)
102 0c98da8b 2005-07-13 devnull {
103 0c98da8b 2005-07-13 devnull if(!fsys->_readlink)
104 0c98da8b 2005-07-13 devnull return Nfs3ErrNxio;
105 0c98da8b 2005-07-13 devnull return (*fsys->_readlink)(fsys, au, h, plink);
106 0c98da8b 2005-07-13 devnull }
107 0c98da8b 2005-07-13 devnull
108 0c98da8b 2005-07-13 devnull Nfs3Status
109 0c98da8b 2005-07-13 devnull fsysaccess(Fsys *fsys, SunAuthUnix *au, Nfs3Handle *h, u32int want, u32int *got, Nfs3Attr *attr)
110 0c98da8b 2005-07-13 devnull {
111 0c98da8b 2005-07-13 devnull if(!fsys->_access)
112 0c98da8b 2005-07-13 devnull return Nfs3ErrNxio;
113 0c98da8b 2005-07-13 devnull return (*fsys->_access)(fsys, au, h, want, got, attr);
114 0c98da8b 2005-07-13 devnull }