mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 21:38:32 +08:00
nfsd4: eliminate struct nfs4_cb_recall
The nfs4_cb_recall struct is used only in nfs4_delegation, so its pointer to the containing delegation is unnecessary--we could just use container_of(). But there's no real reason to have this a separate struct at all--just move these fields to nfs4_delegation. Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
This commit is contained in:
parent
c237dc0303
commit
b53d40c507
@ -215,18 +215,18 @@ encode_cb_compound_hdr(struct xdr_stream *xdr, struct nfs4_cb_compound_hdr *hdr)
|
||||
}
|
||||
|
||||
static int
|
||||
encode_cb_recall(struct xdr_stream *xdr, struct nfs4_cb_recall *cb_rec)
|
||||
encode_cb_recall(struct xdr_stream *xdr, struct nfs4_delegation *dp)
|
||||
{
|
||||
__be32 *p;
|
||||
int len = cb_rec->cbr_fh.fh_size;
|
||||
int len = dp->dl_fh.fh_size;
|
||||
|
||||
RESERVE_SPACE(12+sizeof(cb_rec->cbr_stateid) + len);
|
||||
RESERVE_SPACE(12+sizeof(dp->dl_stateid) + len);
|
||||
WRITE32(OP_CB_RECALL);
|
||||
WRITE32(cb_rec->cbr_stateid.si_generation);
|
||||
WRITEMEM(&cb_rec->cbr_stateid.si_opaque, sizeof(stateid_opaque_t));
|
||||
WRITE32(cb_rec->cbr_trunc);
|
||||
WRITE32(dp->dl_stateid.si_generation);
|
||||
WRITEMEM(&dp->dl_stateid.si_opaque, sizeof(stateid_opaque_t));
|
||||
WRITE32(dp->dl_trunc);
|
||||
WRITE32(len);
|
||||
WRITEMEM(&cb_rec->cbr_fh.fh_base, len);
|
||||
WRITEMEM(&dp->dl_fh.fh_base, len);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -241,11 +241,11 @@ nfs4_xdr_enc_cb_null(struct rpc_rqst *req, __be32 *p)
|
||||
}
|
||||
|
||||
static int
|
||||
nfs4_xdr_enc_cb_recall(struct rpc_rqst *req, __be32 *p, struct nfs4_cb_recall *args)
|
||||
nfs4_xdr_enc_cb_recall(struct rpc_rqst *req, __be32 *p, struct nfs4_delegation *args)
|
||||
{
|
||||
struct xdr_stream xdr;
|
||||
struct nfs4_cb_compound_hdr hdr = {
|
||||
.ident = args->cbr_ident,
|
||||
.ident = args->dl_ident,
|
||||
.nops = 1,
|
||||
};
|
||||
|
||||
@ -502,17 +502,15 @@ nfsd4_cb_recall(struct nfs4_delegation *dp)
|
||||
{
|
||||
struct nfs4_client *clp = dp->dl_client;
|
||||
struct rpc_clnt *clnt = clp->cl_cb_conn.cb_client;
|
||||
struct nfs4_cb_recall *cbr = &dp->dl_recall;
|
||||
struct rpc_message msg = {
|
||||
.rpc_proc = &nfs4_cb_procedures[NFSPROC4_CLNT_CB_RECALL],
|
||||
.rpc_argp = cbr,
|
||||
.rpc_argp = dp,
|
||||
.rpc_cred = clp->cl_cb_conn.cb_cred
|
||||
};
|
||||
int retries = 1;
|
||||
int status = 0;
|
||||
|
||||
cbr->cbr_trunc = 0; /* XXX need to implement truncate optimization */
|
||||
cbr->cbr_dp = dp;
|
||||
dp->dl_trunc = 0; /* XXX need to implement truncate optimization */
|
||||
|
||||
status = rpc_call_sync(clnt, &msg, RPC_TASK_SOFT);
|
||||
while (retries--) {
|
||||
|
@ -203,9 +203,8 @@ alloc_init_deleg(struct nfs4_client *clp, struct nfs4_stateid *stp, struct svc_f
|
||||
get_file(stp->st_vfs_file);
|
||||
dp->dl_vfs_file = stp->st_vfs_file;
|
||||
dp->dl_type = type;
|
||||
dp->dl_recall.cbr_dp = NULL;
|
||||
dp->dl_recall.cbr_ident = cb->cb_ident;
|
||||
dp->dl_recall.cbr_trunc = 0;
|
||||
dp->dl_ident = cb->cb_ident;
|
||||
dp->dl_trunc = 0;
|
||||
dp->dl_stateid.si_boot = get_seconds();
|
||||
dp->dl_stateid.si_stateownerid = current_delegid++;
|
||||
dp->dl_stateid.si_fileid = 0;
|
||||
|
@ -61,15 +61,6 @@ typedef struct {
|
||||
#define si_stateownerid si_opaque.so_stateownerid
|
||||
#define si_fileid si_opaque.so_fileid
|
||||
|
||||
|
||||
struct nfs4_cb_recall {
|
||||
u32 cbr_ident;
|
||||
int cbr_trunc;
|
||||
stateid_t cbr_stateid;
|
||||
struct knfsd_fh cbr_fh;
|
||||
struct nfs4_delegation *cbr_dp;
|
||||
};
|
||||
|
||||
struct nfs4_delegation {
|
||||
struct list_head dl_perfile;
|
||||
struct list_head dl_perclnt;
|
||||
@ -81,12 +72,13 @@ struct nfs4_delegation {
|
||||
struct file *dl_vfs_file;
|
||||
u32 dl_type;
|
||||
time_t dl_time;
|
||||
struct nfs4_cb_recall dl_recall;
|
||||
/* For recall: */
|
||||
u32 dl_ident;
|
||||
int dl_trunc;
|
||||
stateid_t dl_stateid;
|
||||
struct knfsd_fh dl_fh;
|
||||
};
|
||||
|
||||
#define dl_stateid dl_recall.cbr_stateid
|
||||
#define dl_fh dl_recall.cbr_fh
|
||||
|
||||
/* client delegation callback info */
|
||||
struct nfs4_cb_conn {
|
||||
/* SETCLIENTID info */
|
||||
|
Loading…
Reference in New Issue
Block a user