mirror of https://gitee.com/openkylin/linux.git
NFS: kill off complicated macro 'PROC'
kill off obscure macro 'PROC' of NFSv2&3 in order to make the code more clear. Among other things, this makes it simpler to grep for callers of these functions--something which has frequently caused confusion among nfs developers. Signed-off-by: Yu Zhiguo <yuzg@cn.fujitsu.com> Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
This commit is contained in:
parent
59fb30660b
commit
b9081d90f5
|
@ -652,8 +652,6 @@ nfsd3_proc_commit(struct svc_rqst * rqstp, struct nfsd3_commitargs *argp,
|
|||
* NFSv3 Server procedures.
|
||||
* Only the results of non-idempotent operations are cached.
|
||||
*/
|
||||
#define nfs3svc_decode_voidargs NULL
|
||||
#define nfs3svc_release_void NULL
|
||||
#define nfs3svc_decode_fhandleargs nfs3svc_decode_fhandle
|
||||
#define nfs3svc_encode_attrstatres nfs3svc_encode_attrstat
|
||||
#define nfs3svc_encode_wccstatres nfs3svc_encode_wccstat
|
||||
|
@ -686,28 +684,219 @@ struct nfsd3_voidargs { int dummy; };
|
|||
#define WC (7+pAT) /* WCC attributes */
|
||||
|
||||
static struct svc_procedure nfsd_procedures3[22] = {
|
||||
PROC(null, void, void, void, RC_NOCACHE, ST),
|
||||
PROC(getattr, fhandle, attrstat, fhandle, RC_NOCACHE, ST+AT),
|
||||
PROC(setattr, sattr, wccstat, fhandle, RC_REPLBUFF, ST+WC),
|
||||
PROC(lookup, dirop, dirop, fhandle2, RC_NOCACHE, ST+FH+pAT+pAT),
|
||||
PROC(access, access, access, fhandle, RC_NOCACHE, ST+pAT+1),
|
||||
PROC(readlink, readlink, readlink, fhandle, RC_NOCACHE, ST+pAT+1+NFS3_MAXPATHLEN/4),
|
||||
PROC(read, read, read, fhandle, RC_NOCACHE, ST+pAT+4+NFSSVC_MAXBLKSIZE/4),
|
||||
PROC(write, write, write, fhandle, RC_REPLBUFF, ST+WC+4),
|
||||
PROC(create, create, create, fhandle2, RC_REPLBUFF, ST+(1+FH+pAT)+WC),
|
||||
PROC(mkdir, mkdir, create, fhandle2, RC_REPLBUFF, ST+(1+FH+pAT)+WC),
|
||||
PROC(symlink, symlink, create, fhandle2, RC_REPLBUFF, ST+(1+FH+pAT)+WC),
|
||||
PROC(mknod, mknod, create, fhandle2, RC_REPLBUFF, ST+(1+FH+pAT)+WC),
|
||||
PROC(remove, dirop, wccstat, fhandle, RC_REPLBUFF, ST+WC),
|
||||
PROC(rmdir, dirop, wccstat, fhandle, RC_REPLBUFF, ST+WC),
|
||||
PROC(rename, rename, rename, fhandle2, RC_REPLBUFF, ST+WC+WC),
|
||||
PROC(link, link, link, fhandle2, RC_REPLBUFF, ST+pAT+WC),
|
||||
PROC(readdir, readdir, readdir, fhandle, RC_NOCACHE, 0),
|
||||
PROC(readdirplus,readdirplus, readdir, fhandle, RC_NOCACHE, 0),
|
||||
PROC(fsstat, fhandle, fsstat, void, RC_NOCACHE, ST+pAT+2*6+1),
|
||||
PROC(fsinfo, fhandle, fsinfo, void, RC_NOCACHE, ST+pAT+12),
|
||||
PROC(pathconf, fhandle, pathconf, void, RC_NOCACHE, ST+pAT+6),
|
||||
PROC(commit, commit, commit, fhandle, RC_NOCACHE, ST+WC+2),
|
||||
[NFS3PROC_NULL] = {
|
||||
.pc_func = (svc_procfunc) nfsd3_proc_null,
|
||||
.pc_encode = (kxdrproc_t) nfs3svc_encode_voidres,
|
||||
.pc_argsize = sizeof(struct nfsd3_voidargs),
|
||||
.pc_ressize = sizeof(struct nfsd3_voidres),
|
||||
.pc_cachetype = RC_NOCACHE,
|
||||
.pc_xdrressize = ST,
|
||||
},
|
||||
[NFS3PROC_GETATTR] = {
|
||||
.pc_func = (svc_procfunc) nfsd3_proc_getattr,
|
||||
.pc_decode = (kxdrproc_t) nfs3svc_decode_fhandleargs,
|
||||
.pc_encode = (kxdrproc_t) nfs3svc_encode_attrstatres,
|
||||
.pc_release = (kxdrproc_t) nfs3svc_release_fhandle,
|
||||
.pc_argsize = sizeof(struct nfsd3_fhandleargs),
|
||||
.pc_ressize = sizeof(struct nfsd3_attrstatres),
|
||||
.pc_cachetype = RC_NOCACHE,
|
||||
.pc_xdrressize = ST+AT,
|
||||
},
|
||||
[NFS3PROC_SETATTR] = {
|
||||
.pc_func = (svc_procfunc) nfsd3_proc_setattr,
|
||||
.pc_decode = (kxdrproc_t) nfs3svc_decode_sattrargs,
|
||||
.pc_encode = (kxdrproc_t) nfs3svc_encode_wccstatres,
|
||||
.pc_release = (kxdrproc_t) nfs3svc_release_fhandle,
|
||||
.pc_argsize = sizeof(struct nfsd3_sattrargs),
|
||||
.pc_ressize = sizeof(struct nfsd3_wccstatres),
|
||||
.pc_cachetype = RC_REPLBUFF,
|
||||
.pc_xdrressize = ST+WC,
|
||||
},
|
||||
[NFS3PROC_LOOKUP] = {
|
||||
.pc_func = (svc_procfunc) nfsd3_proc_lookup,
|
||||
.pc_decode = (kxdrproc_t) nfs3svc_decode_diropargs,
|
||||
.pc_encode = (kxdrproc_t) nfs3svc_encode_diropres,
|
||||
.pc_release = (kxdrproc_t) nfs3svc_release_fhandle2,
|
||||
.pc_argsize = sizeof(struct nfsd3_diropargs),
|
||||
.pc_ressize = sizeof(struct nfsd3_diropres),
|
||||
.pc_cachetype = RC_NOCACHE,
|
||||
.pc_xdrressize = ST+FH+pAT+pAT,
|
||||
},
|
||||
[NFS3PROC_ACCESS] = {
|
||||
.pc_func = (svc_procfunc) nfsd3_proc_access,
|
||||
.pc_decode = (kxdrproc_t) nfs3svc_decode_accessargs,
|
||||
.pc_encode = (kxdrproc_t) nfs3svc_encode_accessres,
|
||||
.pc_release = (kxdrproc_t) nfs3svc_release_fhandle,
|
||||
.pc_argsize = sizeof(struct nfsd3_accessargs),
|
||||
.pc_ressize = sizeof(struct nfsd3_accessres),
|
||||
.pc_cachetype = RC_NOCACHE,
|
||||
.pc_xdrressize = ST+pAT+1,
|
||||
},
|
||||
[NFS3PROC_READLINK] = {
|
||||
.pc_func = (svc_procfunc) nfsd3_proc_readlink,
|
||||
.pc_decode = (kxdrproc_t) nfs3svc_decode_readlinkargs,
|
||||
.pc_encode = (kxdrproc_t) nfs3svc_encode_readlinkres,
|
||||
.pc_release = (kxdrproc_t) nfs3svc_release_fhandle,
|
||||
.pc_argsize = sizeof(struct nfsd3_readlinkargs),
|
||||
.pc_ressize = sizeof(struct nfsd3_readlinkres),
|
||||
.pc_cachetype = RC_NOCACHE,
|
||||
.pc_xdrressize = ST+pAT+1+NFS3_MAXPATHLEN/4,
|
||||
},
|
||||
[NFS3PROC_READ] = {
|
||||
.pc_func = (svc_procfunc) nfsd3_proc_read,
|
||||
.pc_decode = (kxdrproc_t) nfs3svc_decode_readargs,
|
||||
.pc_encode = (kxdrproc_t) nfs3svc_encode_readres,
|
||||
.pc_release = (kxdrproc_t) nfs3svc_release_fhandle,
|
||||
.pc_argsize = sizeof(struct nfsd3_readargs),
|
||||
.pc_ressize = sizeof(struct nfsd3_readres),
|
||||
.pc_cachetype = RC_NOCACHE,
|
||||
.pc_xdrressize = ST+pAT+4+NFSSVC_MAXBLKSIZE/4,
|
||||
},
|
||||
[NFS3PROC_WRITE] = {
|
||||
.pc_func = (svc_procfunc) nfsd3_proc_write,
|
||||
.pc_decode = (kxdrproc_t) nfs3svc_decode_writeargs,
|
||||
.pc_encode = (kxdrproc_t) nfs3svc_encode_writeres,
|
||||
.pc_release = (kxdrproc_t) nfs3svc_release_fhandle,
|
||||
.pc_argsize = sizeof(struct nfsd3_writeargs),
|
||||
.pc_ressize = sizeof(struct nfsd3_writeres),
|
||||
.pc_cachetype = RC_REPLBUFF,
|
||||
.pc_xdrressize = ST+WC+4,
|
||||
},
|
||||
[NFS3PROC_CREATE] = {
|
||||
.pc_func = (svc_procfunc) nfsd3_proc_create,
|
||||
.pc_decode = (kxdrproc_t) nfs3svc_decode_createargs,
|
||||
.pc_encode = (kxdrproc_t) nfs3svc_encode_createres,
|
||||
.pc_release = (kxdrproc_t) nfs3svc_release_fhandle2,
|
||||
.pc_argsize = sizeof(struct nfsd3_createargs),
|
||||
.pc_ressize = sizeof(struct nfsd3_createres),
|
||||
.pc_cachetype = RC_REPLBUFF,
|
||||
.pc_xdrressize = ST+(1+FH+pAT)+WC,
|
||||
},
|
||||
[NFS3PROC_MKDIR] = {
|
||||
.pc_func = (svc_procfunc) nfsd3_proc_mkdir,
|
||||
.pc_decode = (kxdrproc_t) nfs3svc_decode_mkdirargs,
|
||||
.pc_encode = (kxdrproc_t) nfs3svc_encode_createres,
|
||||
.pc_release = (kxdrproc_t) nfs3svc_release_fhandle2,
|
||||
.pc_argsize = sizeof(struct nfsd3_mkdirargs),
|
||||
.pc_ressize = sizeof(struct nfsd3_createres),
|
||||
.pc_cachetype = RC_REPLBUFF,
|
||||
.pc_xdrressize = ST+(1+FH+pAT)+WC,
|
||||
},
|
||||
[NFS3PROC_SYMLINK] = {
|
||||
.pc_func = (svc_procfunc) nfsd3_proc_symlink,
|
||||
.pc_decode = (kxdrproc_t) nfs3svc_decode_symlinkargs,
|
||||
.pc_encode = (kxdrproc_t) nfs3svc_encode_createres,
|
||||
.pc_release = (kxdrproc_t) nfs3svc_release_fhandle2,
|
||||
.pc_argsize = sizeof(struct nfsd3_symlinkargs),
|
||||
.pc_ressize = sizeof(struct nfsd3_createres),
|
||||
.pc_cachetype = RC_REPLBUFF,
|
||||
.pc_xdrressize = ST+(1+FH+pAT)+WC,
|
||||
},
|
||||
[NFS3PROC_MKNOD] = {
|
||||
.pc_func = (svc_procfunc) nfsd3_proc_mknod,
|
||||
.pc_decode = (kxdrproc_t) nfs3svc_decode_mknodargs,
|
||||
.pc_encode = (kxdrproc_t) nfs3svc_encode_createres,
|
||||
.pc_release = (kxdrproc_t) nfs3svc_release_fhandle2,
|
||||
.pc_argsize = sizeof(struct nfsd3_mknodargs),
|
||||
.pc_ressize = sizeof(struct nfsd3_createres),
|
||||
.pc_cachetype = RC_REPLBUFF,
|
||||
.pc_xdrressize = ST+(1+FH+pAT)+WC,
|
||||
},
|
||||
[NFS3PROC_REMOVE] = {
|
||||
.pc_func = (svc_procfunc) nfsd3_proc_remove,
|
||||
.pc_decode = (kxdrproc_t) nfs3svc_decode_diropargs,
|
||||
.pc_encode = (kxdrproc_t) nfs3svc_encode_wccstatres,
|
||||
.pc_release = (kxdrproc_t) nfs3svc_release_fhandle,
|
||||
.pc_argsize = sizeof(struct nfsd3_diropargs),
|
||||
.pc_ressize = sizeof(struct nfsd3_wccstatres),
|
||||
.pc_cachetype = RC_REPLBUFF,
|
||||
.pc_xdrressize = ST+WC,
|
||||
},
|
||||
[NFS3PROC_RMDIR] = {
|
||||
.pc_func = (svc_procfunc) nfsd3_proc_rmdir,
|
||||
.pc_decode = (kxdrproc_t) nfs3svc_decode_diropargs,
|
||||
.pc_encode = (kxdrproc_t) nfs3svc_encode_wccstatres,
|
||||
.pc_release = (kxdrproc_t) nfs3svc_release_fhandle,
|
||||
.pc_argsize = sizeof(struct nfsd3_diropargs),
|
||||
.pc_ressize = sizeof(struct nfsd3_wccstatres),
|
||||
.pc_cachetype = RC_REPLBUFF,
|
||||
.pc_xdrressize = ST+WC,
|
||||
},
|
||||
[NFS3PROC_RENAME] = {
|
||||
.pc_func = (svc_procfunc) nfsd3_proc_rename,
|
||||
.pc_decode = (kxdrproc_t) nfs3svc_decode_renameargs,
|
||||
.pc_encode = (kxdrproc_t) nfs3svc_encode_renameres,
|
||||
.pc_release = (kxdrproc_t) nfs3svc_release_fhandle2,
|
||||
.pc_argsize = sizeof(struct nfsd3_renameargs),
|
||||
.pc_ressize = sizeof(struct nfsd3_renameres),
|
||||
.pc_cachetype = RC_REPLBUFF,
|
||||
.pc_xdrressize = ST+WC+WC,
|
||||
},
|
||||
[NFS3PROC_LINK] = {
|
||||
.pc_func = (svc_procfunc) nfsd3_proc_link,
|
||||
.pc_decode = (kxdrproc_t) nfs3svc_decode_linkargs,
|
||||
.pc_encode = (kxdrproc_t) nfs3svc_encode_linkres,
|
||||
.pc_release = (kxdrproc_t) nfs3svc_release_fhandle2,
|
||||
.pc_argsize = sizeof(struct nfsd3_linkargs),
|
||||
.pc_ressize = sizeof(struct nfsd3_linkres),
|
||||
.pc_cachetype = RC_REPLBUFF,
|
||||
.pc_xdrressize = ST+pAT+WC,
|
||||
},
|
||||
[NFS3PROC_READDIR] = {
|
||||
.pc_func = (svc_procfunc) nfsd3_proc_readdir,
|
||||
.pc_decode = (kxdrproc_t) nfs3svc_decode_readdirargs,
|
||||
.pc_encode = (kxdrproc_t) nfs3svc_encode_readdirres,
|
||||
.pc_release = (kxdrproc_t) nfs3svc_release_fhandle,
|
||||
.pc_argsize = sizeof(struct nfsd3_readdirargs),
|
||||
.pc_ressize = sizeof(struct nfsd3_readdirres),
|
||||
.pc_cachetype = RC_NOCACHE,
|
||||
},
|
||||
[NFS3PROC_READDIRPLUS] = {
|
||||
.pc_func = (svc_procfunc) nfsd3_proc_readdirplus,
|
||||
.pc_decode = (kxdrproc_t) nfs3svc_decode_readdirplusargs,
|
||||
.pc_encode = (kxdrproc_t) nfs3svc_encode_readdirres,
|
||||
.pc_release = (kxdrproc_t) nfs3svc_release_fhandle,
|
||||
.pc_argsize = sizeof(struct nfsd3_readdirplusargs),
|
||||
.pc_ressize = sizeof(struct nfsd3_readdirres),
|
||||
.pc_cachetype = RC_NOCACHE,
|
||||
},
|
||||
[NFS3PROC_FSSTAT] = {
|
||||
.pc_func = (svc_procfunc) nfsd3_proc_fsstat,
|
||||
.pc_decode = (kxdrproc_t) nfs3svc_decode_fhandleargs,
|
||||
.pc_encode = (kxdrproc_t) nfs3svc_encode_fsstatres,
|
||||
.pc_argsize = sizeof(struct nfsd3_fhandleargs),
|
||||
.pc_ressize = sizeof(struct nfsd3_fsstatres),
|
||||
.pc_cachetype = RC_NOCACHE,
|
||||
.pc_xdrressize = ST+pAT+2*6+1,
|
||||
},
|
||||
[NFS3PROC_FSINFO] = {
|
||||
.pc_func = (svc_procfunc) nfsd3_proc_fsinfo,
|
||||
.pc_decode = (kxdrproc_t) nfs3svc_decode_fhandleargs,
|
||||
.pc_encode = (kxdrproc_t) nfs3svc_encode_fsinfores,
|
||||
.pc_argsize = sizeof(struct nfsd3_fhandleargs),
|
||||
.pc_ressize = sizeof(struct nfsd3_fsinfores),
|
||||
.pc_cachetype = RC_NOCACHE,
|
||||
.pc_xdrressize = ST+pAT+12,
|
||||
},
|
||||
[NFS3PROC_PATHCONF] = {
|
||||
.pc_func = (svc_procfunc) nfsd3_proc_pathconf,
|
||||
.pc_decode = (kxdrproc_t) nfs3svc_decode_fhandleargs,
|
||||
.pc_encode = (kxdrproc_t) nfs3svc_encode_pathconfres,
|
||||
.pc_argsize = sizeof(struct nfsd3_fhandleargs),
|
||||
.pc_ressize = sizeof(struct nfsd3_pathconfres),
|
||||
.pc_cachetype = RC_NOCACHE,
|
||||
.pc_xdrressize = ST+pAT+6,
|
||||
},
|
||||
[NFS3PROC_COMMIT] = {
|
||||
.pc_func = (svc_procfunc) nfsd3_proc_commit,
|
||||
.pc_decode = (kxdrproc_t) nfs3svc_decode_commitargs,
|
||||
.pc_encode = (kxdrproc_t) nfs3svc_encode_commitres,
|
||||
.pc_release = (kxdrproc_t) nfs3svc_release_fhandle,
|
||||
.pc_argsize = sizeof(struct nfsd3_commitargs),
|
||||
.pc_ressize = sizeof(struct nfsd3_commitres),
|
||||
.pc_cachetype = RC_NOCACHE,
|
||||
.pc_xdrressize = ST+WC+2,
|
||||
},
|
||||
};
|
||||
|
||||
struct svc_version nfsd_version3 = {
|
||||
|
|
|
@ -533,45 +533,179 @@ nfsd_proc_statfs(struct svc_rqst * rqstp, struct nfsd_fhandle *argp,
|
|||
* NFSv2 Server procedures.
|
||||
* Only the results of non-idempotent operations are cached.
|
||||
*/
|
||||
#define nfsd_proc_none NULL
|
||||
#define nfssvc_release_none NULL
|
||||
struct nfsd_void { int dummy; };
|
||||
|
||||
#define PROC(name, argt, rest, relt, cache, respsize) \
|
||||
{ (svc_procfunc) nfsd_proc_##name, \
|
||||
(kxdrproc_t) nfssvc_decode_##argt, \
|
||||
(kxdrproc_t) nfssvc_encode_##rest, \
|
||||
(kxdrproc_t) nfssvc_release_##relt, \
|
||||
sizeof(struct nfsd_##argt), \
|
||||
sizeof(struct nfsd_##rest), \
|
||||
0, \
|
||||
cache, \
|
||||
respsize, \
|
||||
}
|
||||
|
||||
#define ST 1 /* status */
|
||||
#define FH 8 /* filehandle */
|
||||
#define AT 18 /* attributes */
|
||||
|
||||
static struct svc_procedure nfsd_procedures2[18] = {
|
||||
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, readlinkargs, readlinkres, none, RC_NOCACHE, ST+1+NFS_MAXPATHLEN/4),
|
||||
PROC(read, readargs, readres, fhandle, RC_NOCACHE, ST+AT+1+NFSSVC_MAXBLKSIZE_V2/4),
|
||||
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_NOCACHE, 0),
|
||||
PROC(statfs, fhandle, statfsres, none, RC_NOCACHE, ST+5),
|
||||
[NFSPROC_NULL] = {
|
||||
.pc_func = (svc_procfunc) nfsd_proc_null,
|
||||
.pc_decode = (kxdrproc_t) nfssvc_decode_void,
|
||||
.pc_encode = (kxdrproc_t) nfssvc_encode_void,
|
||||
.pc_argsize = sizeof(struct nfsd_void),
|
||||
.pc_ressize = sizeof(struct nfsd_void),
|
||||
.pc_cachetype = RC_NOCACHE,
|
||||
.pc_xdrressize = ST,
|
||||
},
|
||||
[NFSPROC_GETATTR] = {
|
||||
.pc_func = (svc_procfunc) nfsd_proc_getattr,
|
||||
.pc_decode = (kxdrproc_t) nfssvc_decode_fhandle,
|
||||
.pc_encode = (kxdrproc_t) nfssvc_encode_attrstat,
|
||||
.pc_release = (kxdrproc_t) nfssvc_release_fhandle,
|
||||
.pc_argsize = sizeof(struct nfsd_fhandle),
|
||||
.pc_ressize = sizeof(struct nfsd_attrstat),
|
||||
.pc_cachetype = RC_NOCACHE,
|
||||
.pc_xdrressize = ST+AT,
|
||||
},
|
||||
[NFSPROC_SETATTR] = {
|
||||
.pc_func = (svc_procfunc) nfsd_proc_setattr,
|
||||
.pc_decode = (kxdrproc_t) nfssvc_decode_sattrargs,
|
||||
.pc_encode = (kxdrproc_t) nfssvc_encode_attrstat,
|
||||
.pc_release = (kxdrproc_t) nfssvc_release_fhandle,
|
||||
.pc_argsize = sizeof(struct nfsd_sattrargs),
|
||||
.pc_ressize = sizeof(struct nfsd_attrstat),
|
||||
.pc_cachetype = RC_REPLBUFF,
|
||||
.pc_xdrressize = ST+AT,
|
||||
},
|
||||
[NFSPROC_ROOT] = {
|
||||
.pc_decode = (kxdrproc_t) nfssvc_decode_void,
|
||||
.pc_encode = (kxdrproc_t) nfssvc_encode_void,
|
||||
.pc_argsize = sizeof(struct nfsd_void),
|
||||
.pc_ressize = sizeof(struct nfsd_void),
|
||||
.pc_cachetype = RC_NOCACHE,
|
||||
.pc_xdrressize = ST,
|
||||
},
|
||||
[NFSPROC_LOOKUP] = {
|
||||
.pc_func = (svc_procfunc) nfsd_proc_lookup,
|
||||
.pc_decode = (kxdrproc_t) nfssvc_decode_diropargs,
|
||||
.pc_encode = (kxdrproc_t) nfssvc_encode_diropres,
|
||||
.pc_release = (kxdrproc_t) nfssvc_release_fhandle,
|
||||
.pc_argsize = sizeof(struct nfsd_diropargs),
|
||||
.pc_ressize = sizeof(struct nfsd_diropres),
|
||||
.pc_cachetype = RC_NOCACHE,
|
||||
.pc_xdrressize = ST+FH+AT,
|
||||
},
|
||||
[NFSPROC_READLINK] = {
|
||||
.pc_func = (svc_procfunc) nfsd_proc_readlink,
|
||||
.pc_decode = (kxdrproc_t) nfssvc_decode_readlinkargs,
|
||||
.pc_encode = (kxdrproc_t) nfssvc_encode_readlinkres,
|
||||
.pc_argsize = sizeof(struct nfsd_readlinkargs),
|
||||
.pc_ressize = sizeof(struct nfsd_readlinkres),
|
||||
.pc_cachetype = RC_NOCACHE,
|
||||
.pc_xdrressize = ST+1+NFS_MAXPATHLEN/4,
|
||||
},
|
||||
[NFSPROC_READ] = {
|
||||
.pc_func = (svc_procfunc) nfsd_proc_read,
|
||||
.pc_decode = (kxdrproc_t) nfssvc_decode_readargs,
|
||||
.pc_encode = (kxdrproc_t) nfssvc_encode_readres,
|
||||
.pc_release = (kxdrproc_t) nfssvc_release_fhandle,
|
||||
.pc_argsize = sizeof(struct nfsd_readargs),
|
||||
.pc_ressize = sizeof(struct nfsd_readres),
|
||||
.pc_cachetype = RC_NOCACHE,
|
||||
.pc_xdrressize = ST+AT+1+NFSSVC_MAXBLKSIZE_V2/4,
|
||||
},
|
||||
[NFSPROC_WRITECACHE] = {
|
||||
.pc_decode = (kxdrproc_t) nfssvc_decode_void,
|
||||
.pc_encode = (kxdrproc_t) nfssvc_encode_void,
|
||||
.pc_argsize = sizeof(struct nfsd_void),
|
||||
.pc_ressize = sizeof(struct nfsd_void),
|
||||
.pc_cachetype = RC_NOCACHE,
|
||||
.pc_xdrressize = ST,
|
||||
},
|
||||
[NFSPROC_WRITE] = {
|
||||
.pc_func = (svc_procfunc) nfsd_proc_write,
|
||||
.pc_decode = (kxdrproc_t) nfssvc_decode_writeargs,
|
||||
.pc_encode = (kxdrproc_t) nfssvc_encode_attrstat,
|
||||
.pc_release = (kxdrproc_t) nfssvc_release_fhandle,
|
||||
.pc_argsize = sizeof(struct nfsd_writeargs),
|
||||
.pc_ressize = sizeof(struct nfsd_attrstat),
|
||||
.pc_cachetype = RC_REPLBUFF,
|
||||
.pc_xdrressize = ST+AT,
|
||||
},
|
||||
[NFSPROC_CREATE] = {
|
||||
.pc_func = (svc_procfunc) nfsd_proc_create,
|
||||
.pc_decode = (kxdrproc_t) nfssvc_decode_createargs,
|
||||
.pc_encode = (kxdrproc_t) nfssvc_encode_diropres,
|
||||
.pc_release = (kxdrproc_t) nfssvc_release_fhandle,
|
||||
.pc_argsize = sizeof(struct nfsd_createargs),
|
||||
.pc_ressize = sizeof(struct nfsd_diropres),
|
||||
.pc_cachetype = RC_REPLBUFF,
|
||||
.pc_xdrressize = ST+FH+AT,
|
||||
},
|
||||
[NFSPROC_REMOVE] = {
|
||||
.pc_func = (svc_procfunc) nfsd_proc_remove,
|
||||
.pc_decode = (kxdrproc_t) nfssvc_decode_diropargs,
|
||||
.pc_encode = (kxdrproc_t) nfssvc_encode_void,
|
||||
.pc_argsize = sizeof(struct nfsd_diropargs),
|
||||
.pc_ressize = sizeof(struct nfsd_void),
|
||||
.pc_cachetype = RC_REPLSTAT,
|
||||
.pc_xdrressize = ST,
|
||||
},
|
||||
[NFSPROC_RENAME] = {
|
||||
.pc_func = (svc_procfunc) nfsd_proc_rename,
|
||||
.pc_decode = (kxdrproc_t) nfssvc_decode_renameargs,
|
||||
.pc_encode = (kxdrproc_t) nfssvc_encode_void,
|
||||
.pc_argsize = sizeof(struct nfsd_renameargs),
|
||||
.pc_ressize = sizeof(struct nfsd_void),
|
||||
.pc_cachetype = RC_REPLSTAT,
|
||||
.pc_xdrressize = ST,
|
||||
},
|
||||
[NFSPROC_LINK] = {
|
||||
.pc_func = (svc_procfunc) nfsd_proc_link,
|
||||
.pc_decode = (kxdrproc_t) nfssvc_decode_linkargs,
|
||||
.pc_encode = (kxdrproc_t) nfssvc_encode_void,
|
||||
.pc_argsize = sizeof(struct nfsd_linkargs),
|
||||
.pc_ressize = sizeof(struct nfsd_void),
|
||||
.pc_cachetype = RC_REPLSTAT,
|
||||
.pc_xdrressize = ST,
|
||||
},
|
||||
[NFSPROC_SYMLINK] = {
|
||||
.pc_func = (svc_procfunc) nfsd_proc_symlink,
|
||||
.pc_decode = (kxdrproc_t) nfssvc_decode_symlinkargs,
|
||||
.pc_encode = (kxdrproc_t) nfssvc_encode_void,
|
||||
.pc_argsize = sizeof(struct nfsd_symlinkargs),
|
||||
.pc_ressize = sizeof(struct nfsd_void),
|
||||
.pc_cachetype = RC_REPLSTAT,
|
||||
.pc_xdrressize = ST,
|
||||
},
|
||||
[NFSPROC_MKDIR] = {
|
||||
.pc_func = (svc_procfunc) nfsd_proc_mkdir,
|
||||
.pc_decode = (kxdrproc_t) nfssvc_decode_createargs,
|
||||
.pc_encode = (kxdrproc_t) nfssvc_encode_diropres,
|
||||
.pc_release = (kxdrproc_t) nfssvc_release_fhandle,
|
||||
.pc_argsize = sizeof(struct nfsd_createargs),
|
||||
.pc_ressize = sizeof(struct nfsd_diropres),
|
||||
.pc_cachetype = RC_REPLBUFF,
|
||||
.pc_xdrressize = ST+FH+AT,
|
||||
},
|
||||
[NFSPROC_RMDIR] = {
|
||||
.pc_func = (svc_procfunc) nfsd_proc_rmdir,
|
||||
.pc_decode = (kxdrproc_t) nfssvc_decode_diropargs,
|
||||
.pc_encode = (kxdrproc_t) nfssvc_encode_void,
|
||||
.pc_argsize = sizeof(struct nfsd_diropargs),
|
||||
.pc_ressize = sizeof(struct nfsd_void),
|
||||
.pc_cachetype = RC_REPLSTAT,
|
||||
.pc_xdrressize = ST,
|
||||
},
|
||||
[NFSPROC_READDIR] = {
|
||||
.pc_func = (svc_procfunc) nfsd_proc_readdir,
|
||||
.pc_decode = (kxdrproc_t) nfssvc_decode_readdirargs,
|
||||
.pc_encode = (kxdrproc_t) nfssvc_encode_readdirres,
|
||||
.pc_argsize = sizeof(struct nfsd_readdirargs),
|
||||
.pc_ressize = sizeof(struct nfsd_readdirres),
|
||||
.pc_cachetype = RC_NOCACHE,
|
||||
},
|
||||
[NFSPROC_STATFS] = {
|
||||
.pc_func = (svc_procfunc) nfsd_proc_statfs,
|
||||
.pc_decode = (kxdrproc_t) nfssvc_decode_fhandle,
|
||||
.pc_encode = (kxdrproc_t) nfssvc_encode_statfsres,
|
||||
.pc_argsize = sizeof(struct nfsd_fhandle),
|
||||
.pc_ressize = sizeof(struct nfsd_statfsres),
|
||||
.pc_cachetype = RC_NOCACHE,
|
||||
.pc_xdrressize = ST+5,
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue