nfsstate
int nfsrv_lockctrl(vnode_t, struct nfsstate **,
struct nfsstate **, nfsquad_t, nfsv4stateid_t *, nfsv4stateid_t *,
int nfsrv_opencheck(nfsquad_t, nfsv4stateid_t *, struct nfsstate *,
int nfsrv_openupdate(vnode_t, struct nfsstate *, nfsquad_t,
int nfsrv_releaselckown(struct nfsstate *, nfsquad_t, NFSPROC_T *);
struct nfsstate;
nfsv4stateid_t *, struct nfsstate *, int *, struct nfsvattr *, int32_t *,
LIST_ENTRY(nfsstate) ls_hash; /* Hash list entry */
LIST_ENTRY(nfsstate) ls_list; /* List of opens/delegs */
LIST_ENTRY(nfsstate) ls_file; /* Opens/Delegs for a file */
struct nfsstate *openowner; /* Open only */
struct nfsstate *lo_stp;
LIST_HEAD(, nfsstate) lf_open; /* Open list */
LIST_HEAD(, nfsstate) lf_deleg; /* Delegation list */
LIST_HEAD(nfsstatehead, nfsstate);
nfsquad_t clientid, nfsv4stateid_t *stateidp, struct nfsstate *stp,
struct nfsstate st, *stp = &st;
struct nfsstate *stp = NULL;
stp = malloc(sizeof (struct nfsstate) + i,
stp = malloc(sizeof (struct nfsstate),
struct nfsstate *stp = NULL;
stp = malloc(sizeof (struct nfsstate) + i,
struct nfsstate *stp;
stp = malloc(sizeof (struct nfsstate),
struct nfsstate *stp = NULL;
stp = malloc(sizeof (struct nfsstate) + i,
struct nfsstate st, *stp = &st;
struct nfsstate st, *stp = &st;
struct nfsstate st, *stp = &st;
struct nfsstate *stp = NULL;
stp = malloc(sizeof (struct nfsstate) + len,
struct nfsstate st, *stp = &st;
struct nfsstate st, *stp = &st;
struct nfsstate inst, outst, *instp = &inst, *outstp = &outst;
struct nfsstate inst, outst, *instp = &inst, *outstp = &outst;
struct nfsstate st, *stp = &st;
struct nfsstate *stp, *openstp, *lckownstp;
struct nfsstate *stp;
struct nfsstate *stp, *nstp;
static void nfsrv_freeopenowner(struct nfsstate *stp, int cansleep,
struct nfsstate *stp, *nstp;
static void nfsrv_freeopen(struct nfsstate *stp, vnode_t vp, int cansleep,
static void nfsrv_freelockowner(struct nfsstate *stp, vnode_t vp, int cansleep,
static void nfsrv_freeallnfslocks(struct nfsstate *stp, vnode_t vp,
struct nfsstate *stp, *nstp;
nfsrv_freedeleg(struct nfsstate *stp)
static void nfsrv_freedeleg(struct nfsstate *);
nfsrv_freeopenowner(struct nfsstate *stp, int cansleep, NFSPROC_T *p)
struct nfsstate *nstp, *tstp;
u_int32_t flags, struct nfsstate **stpp);
static void nfsrv_getowner(struct nfsstatehead *hp, struct nfsstate *new_stp,
struct nfsstate **stpp);
nfsrv_freeopen(struct nfsstate *stp, vnode_t vp, int cansleep, NFSPROC_T *p)
struct nfsstate *nstp, *tstp;
nfsrv_freelockowner(struct nfsstate *stp, vnode_t vp, int cansleep,
struct nfslock *insert_lop, struct nfsstate *stp, struct nfslockfile *lfp);
static void nfsrv_updatelock(struct nfsstate *stp, struct nfslock **new_lopp,
nfsrv_freeallnfslocks(struct nfsstate *stp, vnode_t vp, int cansleep,
struct nfsstate **stpp)
struct nfsstate *stp;
nfsrv_getowner(struct nfsstatehead *hp, struct nfsstate *new_stp,
struct nfsstate **stpp)
struct nfsstate *stp;
nfsrv_lockctrl(vnode_t vp, struct nfsstate **new_stpp,
struct nfsstate *new_stp = *new_stpp;
struct nfsstate *tstp, *mystp, *nstp;
struct nfsstate *stp, *lckstp = NULL;
static int nfsrv_delegconflict(struct nfsstate *stp, int *haslockp,
static void nfsrv_delaydelegtimeout(struct nfsstate *stp);
struct nfsstate *stp, struct nfsrvcache *op);
static int nfsrv_nootherstate(struct nfsstate *stp);
u_quad_t filerev, uint64_t rdonly, struct nfsstate **new_delegp,
struct nfsstate *new_stp, struct nfslockfile *lfp, uint32_t *rflagsp,
struct nfsstate *new_stp, vnode_t vp, struct nfsrv_descript *nd,
struct nfsstate *stp, *nstp;
struct nfsstate *ownerstp;
struct nfsstate **new_stpp, nfsquad_t clientid, nfsv4stateid_t *stateidp,
struct nfsstate *new_stp = *new_stpp;
struct nfsstate *stp, *nstp;
struct nfsstate *openstp = NULL, *new_open, *ownerstp, *new_deleg;
new_open = malloc(sizeof (struct nfsstate),
new_deleg = malloc(sizeof (struct nfsstate),
struct nfsstate *stp, *tstp;
nfsrv_openupdate(vnode_t vp, struct nfsstate *new_stp, nfsquad_t clientid,
struct nfsstate *stp;
struct nfsstate *stp;
nfsrv_releaselckown(struct nfsstate *new_stp, nfsquad_t clientid,
struct nfsstate *stp, *nstp, *openstp, *ownstp;
struct nfsstate *stp, struct nfslockfile *lfp)
else if ((struct nfsstate *)insert_lop == stp)
nfsrv_updatelock(struct nfsstate *stp, struct nfslock **new_lopp,
struct nfsstate *stp, struct nfsrvcache *op)
struct nfsstate *stp;
nfsrv_delegconflict(struct nfsstate *stp, int *haslockp, NFSPROC_T *p,
struct nfsstate *stp;
struct nfsstate *stp, *nstp;
struct nfsstate st, *stp = &st;
struct nfsstate *stp;
struct nfsstate *stp, *nstp;
nfsrv_delaydelegtimeout(struct nfsstate *stp)
nfsrv_nootherstate(struct nfsstate *stp)
struct nfsstate *tstp;
struct nfsstate *stp;
struct nfsstate *stp;
struct nfsstate *stp;
struct nfsstate *stp;
u_quad_t filerev, uint64_t rdonly, struct nfsstate **new_delegp,
struct nfsstate *new_stp, struct nfslockfile *lfp, uint32_t *rflagsp,
struct nfsstate *up_deleg, *new_deleg;
struct nfsstate *stp, *nstp;