patch-2.4.20 linux-2.4.20/fs/nfsd/nfsproc.c
Next file: linux-2.4.20/fs/nfsd/nfssvc.c
Previous file: linux-2.4.20/fs/nfsd/nfsfh.c
Back to the patch index
Back to the overall index
- Lines: 84
- Date:
Thu Nov 28 15:53:15 2002
- Orig file:
linux-2.4.19/fs/nfsd/nfsproc.c
- Orig date:
Sun Oct 21 10:40:36 2001
diff -urN linux-2.4.19/fs/nfsd/nfsproc.c linux-2.4.20/fs/nfsd/nfsproc.c
@@ -148,6 +148,7 @@
argp->count);
argp->count = avail << 2;
}
+ svc_reserve(rqstp, (19<<2) + argp->count + 4);
resp->count = argp->count;
nfserr = nfsd_read(rqstp, fh_copy(&resp->fh, &argp->fh),
@@ -263,11 +264,11 @@
/* this is probably a permission check..
* at least IRIX implements perm checking on
* echo thing > device-special-file-or-pipe
- * by does a CREATE with type==0
+ * by doing a CREATE with type==0
*/
nfserr = nfsd_permission(newfhp->fh_export,
newfhp->fh_dentry,
- MAY_WRITE);
+ MAY_WRITE|_NFSD_IRIX_BOGOSITY);
if (nfserr && nfserr != nfserr_rofs)
goto out_unlock;
}
@@ -522,7 +523,7 @@
#define nfssvc_release_none NULL
struct nfsd_void { int dummy; };
-#define PROC(name, argt, rest, relt, cache) \
+#define PROC(name, argt, rest, relt, cache, respsize) \
{ (svc_procfunc) nfsd_proc_##name, \
(kxdrproc_t) nfssvc_decode_##argt, \
(kxdrproc_t) nfssvc_encode_##rest, \
@@ -530,27 +531,33 @@
sizeof(struct nfsd_##argt), \
sizeof(struct nfsd_##rest), \
0, \
- cache \
+ cache, \
+ respsize, \
}
+
+#define ST 1 /* status */
+#define FH 8 /* filehandle */
+#define AT 18 /* attributes */
+
struct svc_procedure nfsd_procedures2[18] = {
- PROC(null, void, void, none, RC_NOCACHE),
- PROC(getattr, fhandle, attrstat, fhandle, RC_NOCACHE),
- PROC(setattr, sattrargs, attrstat, fhandle, RC_REPLBUFF),
- PROC(none, void, void, none, RC_NOCACHE),
- PROC(lookup, diropargs, diropres, fhandle, RC_NOCACHE),
- PROC(readlink, fhandle, readlinkres, none, RC_NOCACHE),
- PROC(read, readargs, readres, fhandle, RC_NOCACHE),
- PROC(none, void, void, none, RC_NOCACHE),
- PROC(write, writeargs, attrstat, fhandle, RC_REPLBUFF),
- PROC(create, createargs, diropres, fhandle, RC_REPLBUFF),
- PROC(remove, diropargs, void, none, RC_REPLSTAT),
- PROC(rename, renameargs, void, none, RC_REPLSTAT),
- PROC(link, linkargs, void, none, RC_REPLSTAT),
- PROC(symlink, symlinkargs, void, none, RC_REPLSTAT),
- PROC(mkdir, createargs, diropres, fhandle, RC_REPLBUFF),
- PROC(rmdir, diropargs, void, none, RC_REPLSTAT),
- PROC(readdir, readdirargs, readdirres, none, RC_REPLBUFF),
- PROC(statfs, fhandle, statfsres, none, RC_NOCACHE),
+ PROC(null, void, void, none, RC_NOCACHE, ST),
+ PROC(getattr, fhandle, attrstat, fhandle, RC_NOCACHE, ST+AT),
+ PROC(setattr, sattrargs, attrstat, fhandle, RC_REPLBUFF, ST+AT),
+ PROC(none, void, void, none, RC_NOCACHE, ST),
+ PROC(lookup, diropargs, diropres, fhandle, RC_NOCACHE, ST+FH+AT),
+ PROC(readlink, fhandle, readlinkres, none, RC_NOCACHE, ST+1+256),
+ PROC(read, readargs, readres, fhandle, RC_NOCACHE, ST+AT+1+NFSSVC_MAXBLKSIZE),
+ PROC(none, void, void, none, RC_NOCACHE, ST),
+ PROC(write, writeargs, attrstat, fhandle, RC_REPLBUFF, ST+AT),
+ PROC(create, createargs, diropres, fhandle, RC_REPLBUFF, ST+FH+AT),
+ PROC(remove, diropargs, void, none, RC_REPLSTAT, ST),
+ PROC(rename, renameargs, void, none, RC_REPLSTAT, ST),
+ PROC(link, linkargs, void, none, RC_REPLSTAT, ST),
+ PROC(symlink, symlinkargs, void, none, RC_REPLSTAT, ST),
+ PROC(mkdir, createargs, diropres, fhandle, RC_REPLBUFF, ST+FH+AT),
+ PROC(rmdir, diropargs, void, none, RC_REPLSTAT, ST),
+ PROC(readdir, readdirargs, readdirres, none, RC_REPLBUFF, 0),
+ PROC(statfs, fhandle, statfsres, none, RC_NOCACHE, ST+5),
};
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)