stateid_t
stateid_t stateid;
static void encode_stateid4(struct xdr_stream *xdr, const stateid_t *sid)
struct nfsd4_compound_state *cstate, stateid_t *stateid,
stateid_t *stateid = &write->wr_stateid;
stateid_t *src_stateid, struct nfsd_file **src,
stateid_t *dst_stateid, struct nfsd_file **dst)
stateid_t *s_stid = ©->cp_src_stateid;
find_async_copy_locked(struct nfs4_client *clp, stateid_t *stateid)
find_async_copy(struct nfs4_client *clp, stateid_t *stateid)
memcpy(&cn->cpn_cnr_stateid, &cps->cp_stateid.cs_stid, sizeof(stateid_t));
memcpy(&cps->cp_p_stateid, &stid->sc_stateid, sizeof(stateid_t));
memcpy(&cstate->current_stateid, &cstate->save_stateid, sizeof(stateid_t));
memcpy(&cstate->save_stateid, &cstate->current_stateid, sizeof(stateid_t));
nfs4_inc_and_copy_stateid(stateid_t *dst, struct nfs4_stid *stid)
stateid_t *src = &stid->sc_stateid;
find_stateid_locked(struct nfs4_client *cl, stateid_t *t)
find_stateid_by_type(struct nfs4_client *cl, stateid_t *t,
static void nfs4_show_stateid(struct seq_file *s, stateid_t *stid)
stateid_t *stid)
stateid_t *s)
static const stateid_t one_stateid = {
static const stateid_t zero_stateid = {
static const stateid_t currentstateid = {
check_special_stateids(struct net *net, svc_fh *current_fh, stateid_t *stateid, int flags)
static __be32 check_stateid_generation(stateid_t *in, stateid_t *ref, bool has_session)
static __be32 nfsd4_stid_check_stateid_generation(stateid_t *in, struct nfs4_stid *s, bool has_session)
static __be32 nfsd4_validate_stateid(struct nfs4_client *cl, stateid_t *stateid)
stateid_t *stateid,
static const stateid_t close_stateid = {
__be32 manage_cpntf_state(struct nfsd_net *nn, stateid_t *st,
static __be32 find_cpntf_state(struct nfsd_net *nn, stateid_t *st,
stateid_t *stateid, int flags, struct nfsd_file **nfp,
nfsd4_free_lock_stateid(stateid_t *stateid, struct nfs4_stid *s)
stateid_t *stateid = &free_stateid->fr_stateid;
static __be32 nfs4_seqid_op_checks(struct nfsd4_compound_state *cstate, stateid_t *stateid, u32 seqid, struct nfs4_ol_stateid *stp)
stateid_t *stateid,
stateid_t *stateid, struct nfs4_ol_stateid **stpp, struct nfsd_net *nn)
stateid_t *stateid = &dr->dr_stateid;
#define ZERO_STATEID(stateid) (!memcmp((stateid), &zero_stateid, sizeof(stateid_t)))
#define ONE_STATEID(stateid) (!memcmp((stateid), &one_stateid, sizeof(stateid_t)))
#define CURRENT_STATEID(stateid) (!memcmp((stateid), ¤tstateid, sizeof(stateid_t)))
#define CLOSE_STATEID(stateid) (!memcmp((stateid), &close_stateid, sizeof(stateid_t)))
get_stateid(struct nfsd4_compound_state *cstate, stateid_t *stateid)
memcpy(stateid, &cstate->current_stateid, sizeof(stateid_t));
put_stateid(struct nfsd4_compound_state *cstate, stateid_t *stateid)
memcpy(&cstate->current_stateid, stateid, sizeof(stateid_t));
nfsd4_encode_stateid4(struct xdr_stream *xdr, const stateid_t *sid)
nfsd4_decode_stateid4(struct nfsd4_compoundargs *argp, stateid_t *sid)
struct nfsd4_compound_state *cstate, stateid_t *stateid,
stateid_t sc_stateid;
stateid_t cp_p_stateid; /* copy of parent's stateid */
stateid_t cs_stid;
stateid_t ls_recall_sid;
static inline bool nfsd4_stateid_generation_after(stateid_t *a, stateid_t *b)
stateid_t *stateid, int flags, struct nfsd_file **filp,
stateid_t *stateid, unsigned short typemask,
void nfs4_inc_and_copy_stateid(stateid_t *dst, struct nfs4_stid *stid);
extern __be32 manage_cpntf_state(struct nfsd_net *nn, stateid_t *st,
const stateid_t *stp = &stid->sc_stateid;
const stateid_t *stp,
const stateid_t *stp,
const stateid_t *stp, \
const stateid_t *src_stp = ©->cp_src_stateid;
const stateid_t *dst_stp = ©->cp_dst_stateid;
const stateid_t *cb_stp = ©->cp_res.cb_stateid;
const stateid_t *src_stp = ©->cp_src_stateid;
const stateid_t *dst_stp = ©->cp_dst_stateid;
const stateid_t *cb_stp = ©->cp_res.cb_stateid;
TP_PROTO(stateid_t *stp),
TP_PROTO(stateid_t *stp), \
TP_PROTO(u32 seqid, const stateid_t *stp),
TP_PROTO(u32 seqid, const stateid_t *stp), \
const stateid_t *stp = &stid->sc_stateid;
stateid_t current_stateid;
stateid_t save_stateid;
stateid_t cl_stateid; /* request+response */
stateid_t dr_stateid;
stateid_t open_stateid;
stateid_t lock_stateid;
stateid_t lk_resp_stateid;
stateid_t lu_stateid;
stateid_t op_delegate_stateid; /* request - response */
stateid_t op_stateid; /* response */
stateid_t oc_req_stateid /* request */;
stateid_t oc_resp_stateid /* response */;
stateid_t od_stateid;
stateid_t rd_stateid; /* request */
stateid_t sa_stateid; /* request */
stateid_t ts_id_stateid;
stateid_t fr_stateid; /* request */
stateid_t gddr_stateid;
stateid_t wr_stateid; /* request */
stateid_t lg_sid; /* request/response */
stateid_t lc_sid; /* request */
stateid_t lr_sid; /* request/response */
stateid_t falloc_stateid;
stateid_t cl_src_stateid;
stateid_t cl_dst_stateid;
stateid_t cb_stateid;
stateid_t cp_src_stateid;
stateid_t cp_dst_stateid;
stateid_t seek_stateid;
stateid_t stateid;
stateid_t cpn_src_stateid;
stateid_t cpn_cnr_stateid;