NFS: Introduce struct nfs_removeargs+nfs_removeres
We need a common structure for setting up an unlink() rpc call in order to fix the asynchronous unlink code. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
@@ -50,6 +50,7 @@
|
||||
|
||||
#define NFS3_sattrargs_sz (NFS3_fh_sz+NFS3_sattr_sz+3)
|
||||
#define NFS3_diropargs_sz (NFS3_fh_sz+NFS3_filename_sz)
|
||||
#define NFS3_removeargs_sz (NFS3_fh_sz+NFS3_filename_sz)
|
||||
#define NFS3_accessargs_sz (NFS3_fh_sz+1)
|
||||
#define NFS3_readlinkargs_sz (NFS3_fh_sz)
|
||||
#define NFS3_readargs_sz (NFS3_fh_sz+3)
|
||||
@@ -65,6 +66,7 @@
|
||||
|
||||
#define NFS3_attrstat_sz (1+NFS3_fattr_sz)
|
||||
#define NFS3_wccstat_sz (1+NFS3_wcc_data_sz)
|
||||
#define NFS3_removeres_sz (NFS3_wccstat_sz)
|
||||
#define NFS3_lookupres_sz (1+NFS3_fh_sz+(2 * NFS3_post_op_attr_sz))
|
||||
#define NFS3_accessres_sz (1+NFS3_post_op_attr_sz+1)
|
||||
#define NFS3_readlinkres_sz (1+NFS3_post_op_attr_sz+1)
|
||||
@@ -106,7 +108,7 @@ static struct {
|
||||
* Common NFS XDR functions as inlines
|
||||
*/
|
||||
static inline __be32 *
|
||||
xdr_encode_fhandle(__be32 *p, struct nfs_fh *fh)
|
||||
xdr_encode_fhandle(__be32 *p, const struct nfs_fh *fh)
|
||||
{
|
||||
return xdr_encode_array(p, fh->data, fh->size);
|
||||
}
|
||||
@@ -299,6 +301,18 @@ nfs3_xdr_diropargs(struct rpc_rqst *req, __be32 *p, struct nfs3_diropargs *args)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Encode REMOVE argument
|
||||
*/
|
||||
static int
|
||||
nfs3_xdr_removeargs(struct rpc_rqst *req, __be32 *p, const struct nfs_removeargs *args)
|
||||
{
|
||||
p = xdr_encode_fhandle(p, args->fh);
|
||||
p = xdr_encode_array(p, args->name.name, args->name.len);
|
||||
req->rq_slen = xdr_adjust_iovec(req->rq_svec, p);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Encode access() argument
|
||||
*/
|
||||
@@ -736,6 +750,12 @@ nfs3_xdr_wccstat(struct rpc_rqst *req, __be32 *p, struct nfs_fattr *fattr)
|
||||
return status;
|
||||
}
|
||||
|
||||
static int
|
||||
nfs3_xdr_removeres(struct rpc_rqst *req, __be32 *p, struct nfs_removeres *res)
|
||||
{
|
||||
return nfs3_xdr_wccstat(req, p, &res->dir_attr);
|
||||
}
|
||||
|
||||
/*
|
||||
* Decode LOOKUP reply
|
||||
*/
|
||||
@@ -1126,7 +1146,7 @@ struct rpc_procinfo nfs3_procedures[] = {
|
||||
PROC(MKDIR, mkdirargs, createres, 0),
|
||||
PROC(SYMLINK, symlinkargs, createres, 0),
|
||||
PROC(MKNOD, mknodargs, createres, 0),
|
||||
PROC(REMOVE, diropargs, wccstat, 0),
|
||||
PROC(REMOVE, removeargs, removeres, 0),
|
||||
PROC(RMDIR, diropargs, wccstat, 0),
|
||||
PROC(RENAME, renameargs, renameres, 0),
|
||||
PROC(LINK, linkargs, linkres, 0),
|
||||
|
Reference in New Issue
Block a user