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