nfsd
TAILQ_ENTRY(nfsd) nfsd_chain; /* List of all nfsd's */
extern TAILQ_HEAD(nfsdhead, nfsd) nfsd_head;
struct nfsd *nsd_nfsd; /* Pointer to in kernel nfsd struct */
nfsrv_create(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
struct mbuf *nam = nfsd->nd_nam;
struct ucred *cred = &nfsd->nd_cr;
info.nmi_mrep = nfsd->nd_mrep;
info.nmi_md = nfsd->nd_md;
info.nmi_dpos = nfsd->nd_dpos;
info.nmi_v3 = (nfsd->nd_flag & ND_NFSV3);
if (nfsm_srvmtofh1(&info, nfsd, slp, mrq) != 0)
(void)nfsm_reply(&info, nfsd, slp, mrq, error, 0);
nfsm_srvmtofh1(struct nfsm_info *infop, struct nfsrv_descript *nfsd,
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvwcc(nfsd, dirfor_ret, &dirfor, diraft_ret, &diraft,
return nfsm_reply(infop, nfsd, slp, mrq,
if (nfsm_reply(&info, nfsd, slp, mrq, error,
if (nfsm_reply(&info, nfsd, slp, mrq, error,
if (nfsm_reply(&info, nfsd, slp, mrq, error,
if (nfsm_reply(&info, nfsd, slp, mrq, error,
if (nfsm_reply(&info, nfsd, slp, mrq, error, NFSX_SRVFH(info.nmi_v3) +
nfsm_srvpostop_attr(nfsd, 0, &va, &info);
nfsm_srvwcc(nfsd, dirfor_ret, &dirfor, diraft_ret, &diraft,
nfsm_srvfattr(nfsd, &va, fp);
nfsrv_mknod(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
struct mbuf *nam = nfsd->nd_nam;
struct ucred *cred = &nfsd->nd_cr;
info.nmi_mrep = nfsd->nd_mrep;
info.nmi_md = nfsd->nd_md;
info.nmi_dpos = nfsd->nd_dpos;
info.nmi_v3 = (nfsd->nd_flag & ND_NFSV3);
if (nfsm_srvmtofh1(&info, nfsd, slp, mrq) != 0)
(void)nfsm_reply(&info, nfsd, slp, mrq, error, 0);
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvwcc(nfsd, dirfor_ret, &dirfor, diraft_ret, &diraft,
nfsrv3_access(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
struct mbuf *nam = nfsd->nd_nam;
struct ucred *cred = &nfsd->nd_cr;
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvpostop_attr(nfsd, 0, &va, &info);
nfsm_srvwcc(nfsd, dirfor_ret, &dirfor, diraft_ret, &diraft, &info);
nfsrv_remove(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
struct mbuf *nam = nfsd->nd_nam;
struct ucred *cred = &nfsd->nd_cr;
info.nmi_mrep = nfsd->nd_mrep;
info.nmi_md = nfsd->nd_md;
info.nmi_dpos = nfsd->nd_dpos;
info.nmi_v3 = (nfsd->nd_flag & ND_NFSV3);
if (nfsm_srvmtofh1(&info, nfsd, slp, mrq) != 0)
(void)nfsm_reply(&info, nfsd, slp, mrq, error, 0);
info.nmi_mrep = nfsd->nd_mrep;
info.nmi_md = nfsd->nd_md;
info.nmi_dpos = nfsd->nd_dpos;
if (nfsm_reply(&info, nfsd, slp, mrq, error,
info.nmi_v3 = (nfsd->nd_flag & ND_NFSV3);
nfsm_srvwcc(nfsd, dirfor_ret, &dirfor, diraft_ret, &diraft,
nfsrv_rename(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
struct mbuf *nam = nfsd->nd_nam;
struct ucred *cred = &nfsd->nd_cr;
if (nfsm_srvmtofh1(&info, nfsd, slp, mrq) != 0)
info.nmi_mrep = nfsd->nd_mrep;
info.nmi_md = nfsd->nd_md;
info.nmi_dpos = nfsd->nd_dpos;
info.nmi_v3 = (nfsd->nd_flag & ND_NFSV3);
if (nfsm_srvmtofh1(&info, nfsd, slp, mrq) != 0)
(void)nfsm_reply(&info, nfsd, slp, mrq, error, 0);
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvwcc(nfsd, fdirfor_ret, &fdirfor, fdiraft_ret, &fdiraft,
nfsm_srvwcc(nfsd, tdirfor_ret, &tdirfor, tdiraft_ret, &tdiraft,
if (nfsm_srvmtofh1(&info, nfsd, slp, mrq) != 0)
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvpostop_attr(nfsd, 1, NULL, &info);
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvwcc(nfsd, fdirfor_ret, &fdirfor, fdiraft_ret, &fdiraft,
nfsm_srvwcc(nfsd, tdirfor_ret, &tdirfor, tdiraft_ret, &tdiraft,
nfsrv_link(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
struct mbuf *nam = nfsd->nd_nam;
struct ucred *cred = &nfsd->nd_cr;
info.nmi_mrep = nfsd->nd_mrep;
info.nmi_md = nfsd->nd_md;
info.nmi_dpos = nfsd->nd_dpos;
info.nmi_v3 = (nfsd->nd_flag & ND_NFSV3);
if (nfsm_srvmtofh1(&info, nfsd, slp, mrq) != 0)
if (nfsm_srvmtofh1(&info, nfsd, slp, mrq) != 0)
(void)nfsm_reply(&info, nfsd, slp, mrq, error, 0);
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
nfsm_srvwcc(nfsd, dirfor_ret, &dirfor, diraft_ret, &diraft,
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
nfsm_srvwcc(nfsd, dirfor_ret, &dirfor, diraft_ret, &diraft,
nfsrv_symlink(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
struct mbuf *nam = nfsd->nd_nam;
struct ucred *cred = &nfsd->nd_cr;
info.nmi_mrep = nfsd->nd_mrep;
info.nmi_md = nfsd->nd_md;
info.nmi_dpos = nfsd->nd_dpos;
info.nmi_v3 = (nfsd->nd_flag & ND_NFSV3);
if (nfsm_srvmtofh1(&info, nfsd, slp, mrq) != 0)
(void)nfsm_reply(&info, nfsd, slp, mrq, error, 0);
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvpostop_attr(nfsd, getret, &va, &info);
if (nfsm_reply(&info, nfsd, slp, mrq, error, NFSX_SRVFH(info.nmi_v3) +
nfsm_srvpostop_attr(nfsd, 0, &va, &info);
nfsm_srvwcc(nfsd, dirfor_ret, &dirfor, diraft_ret, &diraft,
nfsrv_mkdir(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
struct mbuf *nam = nfsd->nd_nam;
struct ucred *cred = &nfsd->nd_cr;
info.nmi_mrep = nfsd->nd_mrep;
info.nmi_md = nfsd->nd_md;
info.nmi_dpos = nfsd->nd_dpos;
info.nmi_v3 = (nfsd->nd_flag & ND_NFSV3);
if (nfsm_srvmtofh1(&info, nfsd, slp, mrq) != 0)
(void)nfsm_reply(&info, nfsd, slp, mrq, error, 0);
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsrv_getattr(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
nfsm_srvwcc(nfsd, dirfor_ret, &dirfor, diraft_ret, &diraft,
struct mbuf *nam = nfsd->nd_nam;
if (nfsm_reply(&info, nfsd, slp, mrq, error, NFSX_SRVFH(info.nmi_v3) +
struct ucred *cred = &nfsd->nd_cr;
nfsm_srvpostop_attr(nfsd, 0, &va, &info);
nfsm_srvwcc(nfsd, dirfor_ret, &dirfor, diraft_ret, &diraft,
nfsm_srvfattr(nfsd, &va, fp);
nfsrv_rmdir(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
struct mbuf *nam = nfsd->nd_nam;
struct ucred *cred = &nfsd->nd_cr;
info.nmi_mrep = nfsd->nd_mrep;
info.nmi_md = nfsd->nd_md;
info.nmi_dpos = nfsd->nd_dpos;
info.nmi_v3 = (nfsd->nd_flag & ND_NFSV3);
if (nfsm_srvmtofh1(&info, nfsd, slp, mrq) != 0)
(void)nfsm_reply(&info, nfsd, slp, mrq, error, 0);
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvwcc(nfsd, dirfor_ret, &dirfor, diraft_ret, &diraft,
info.nmi_mrep = nfsd->nd_mrep;
info.nmi_md = nfsd->nd_md;
info.nmi_dpos = nfsd->nd_dpos;
info.nmi_v3 = (nfsd->nd_flag & ND_NFSV3);
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvwcc(nfsd, dirfor_ret, &dirfor, diraft_ret, &diraft,
if (nfsm_srvmtofh1(&info, nfsd, slp, mrq) != 0)
nfsrv_readdir(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
struct mbuf *nam = nfsd->nd_nam;
struct ucred *cred = &nfsd->nd_cr;
info.nmi_mrep = nfsd->nd_mrep;
info.nmi_md = nfsd->nd_md;
info.nmi_dpos = nfsd->nd_dpos;
info.nmi_v3 = (nfsd->nd_flag & ND_NFSV3);
if (nfsm_srvmtofh1(&info, nfsd, slp, mrq) != 0)
xfer = NFS_SRVMAXDATA(nfsd);
if (nfsm_reply(&info, nfsd, slp, mrq, error, 0) != 0)
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
if (nfsm_reply(&info, nfsd, slp, mrq, error,
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
NFSX_FATTR(nfsd->nd_flag & ND_NFSV3)) != 0)
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
fp = nfsm_build(&info.nmi_mb, NFSX_FATTR(nfsd->nd_flag & ND_NFSV3));
nfsm_srvfattr(nfsd, &va, fp);
nfsrv_readdirplus(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
struct mbuf *nam = nfsd->nd_nam;
struct ucred *cred = &nfsd->nd_cr;
info.nmi_mrep = nfsd->nd_mrep;
info.nmi_md = nfsd->nd_md;
info.nmi_dpos = nfsd->nd_dpos;
info.nmi_v3 = (nfsd->nd_flag & ND_NFSV3);
if (nfsm_srvmtofh1(&info, nfsd, slp, mrq) != 0)
xfer = NFS_SRVMAXDATA(nfsd);
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsrv_setattr(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
struct mbuf *nam = nfsd->nd_nam;
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
if (nfsm_reply(&info, nfsd, slp, mrq, error,
struct ucred *cred = &nfsd->nd_cr;
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
if (nfsm_reply(&info, nfsd, slp, mrq, error, cnt) != 0)
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
nfsm_srvfattr(nfsd, vap, fp);
info.nmi_mrep = nfsd->nd_mrep;
info.nmi_md = nfsd->nd_md;
nfsrv_commit(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
struct mbuf *nam = nfsd->nd_nam;
struct ucred *cred = &nfsd->nd_cr;
info.nmi_dpos = nfsd->nd_dpos;
info.nmi_mrep = nfsd->nd_mrep;
info.nmi_md = nfsd->nd_md;
info.nmi_v3 = (nfsd->nd_flag & ND_NFSV3);
info.nmi_dpos = nfsd->nd_dpos;
info.nmi_v3 = (nfsd->nd_flag & ND_NFSV3);
if (nfsm_srvmtofh1(&info, nfsd, slp, mrq) != 0)
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvwcc(nfsd, for_ret, &bfor, aft_ret, &aft, &info);
if (nfsm_srvmtofh1(&info, nfsd, slp, mrq) != 0)
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvwcc(nfsd, for_ret, &bfor, aft_ret, &aft, &info);
nfsrv_statfs(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
struct mbuf *nam = nfsd->nd_nam;
struct ucred *cred = &nfsd->nd_cr;
info.nmi_mrep = nfsd->nd_mrep;
info.nmi_md = nfsd->nd_md;
info.nmi_dpos = nfsd->nd_dpos;
info.nmi_v3 = (nfsd->nd_flag & ND_NFSV3);
if (nfsm_srvmtofh1(&info, nfsd, slp, mrq) != 0)
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
nfsrv_fsinfo(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
struct mbuf *nam = nfsd->nd_nam;
struct ucred *cred = &nfsd->nd_cr;
info.nmi_mrep = nfsd->nd_mrep;
info.nmi_md = nfsd->nd_md;
info.nmi_dpos = nfsd->nd_dpos;
info.nmi_v3 = (nfsd->nd_flag & ND_NFSV3);
if (nfsm_srvmtofh1(&info, nfsd, slp, mrq) != 0)
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
nfsrv_pathconf(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
struct mbuf *nam = nfsd->nd_nam;
struct ucred *cred = &nfsd->nd_cr;
info.nmi_mrep = nfsd->nd_mrep;
info.nmi_md = nfsd->nd_md;
info.nmi_dpos = nfsd->nd_dpos;
info.nmi_v3 = (nfsd->nd_flag & ND_NFSV3);
if (nfsm_srvmtofh1(&info, nfsd, slp, mrq) != 0)
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
nfsrv_null(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
info.nmi_mrep = nfsd->nd_mrep;
info.nmi_md = nfsd->nd_md;
info.nmi_dpos = nfsd->nd_dpos;
info.nmi_v3 = (nfsd->nd_flag & ND_NFSV3);
if (nfsm_reply(&info, nfsd, slp, mrq, error, 0) != 0)
nfsrv_noop(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
info.nmi_mrep = nfsd->nd_mrep;
info.nmi_md = nfsd->nd_md;
info.nmi_dpos = nfsd->nd_dpos;
info.nmi_v3 = (nfsd->nd_flag & ND_NFSV3);
if (nfsd->nd_repstat)
error = nfsd->nd_repstat;
if (nfsm_reply(&info, nfsd, slp, mrq, error, 0) != 0)
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvwcc(nfsd, preat_ret, &preat, postat_ret, &va, &info);
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvwcc(nfsd, preat_ret, &preat, postat_ret, &va,
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvwcc(nfsd, preat_ret, &preat, postat_ret, &va,
nfsm_srvfattr(nfsd, &va, fp);
nfsrv_lookup(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
struct mbuf *nam = nfsd->nd_nam;
struct ucred *cred = &nfsd->nd_cr;
int v3 = (nfsd->nd_flag & ND_NFSV3);
info.nmi_mrep = nfsd->nd_mrep;
info.nmi_md = nfsd->nd_md;
info.nmi_dpos = nfsd->nd_dpos;
info.nmi_v3 = (nfsd->nd_flag & ND_NFSV3);
if (nfsm_srvmtofh1(&info, nfsd, slp, mrq) != 0)
(void)nfsm_reply(&info, nfsd, slp, mrq, error, 0);
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvpostop_attr(nfsd, dirattr_ret, &dirattr, &info);
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvpostop_attr(nfsd, dirattr_ret, &dirattr, &info);
nfsm_srvpostop_attr(nfsd, 0, &va, &info);
nfsm_srvpostop_attr(nfsd, dirattr_ret, &dirattr, &info);
nfsm_srvfattr(nfsd, &va, fp);
nfsrv_readlink(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
struct mbuf *nam = nfsd->nd_nam;
struct ucred *cred = &nfsd->nd_cr;
info.nmi_mrep = nfsd->nd_mrep;
info.nmi_md = nfsd->nd_md;
info.nmi_dpos = nfsd->nd_dpos;
info.nmi_v3 = (nfsd->nd_flag & ND_NFSV3);
if (nfsm_srvmtofh1(&info, nfsd, slp, mrq) != 0)
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvpostop_attr(nfsd, 1, NULL, &info);
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvpostop_attr(nfsd, getret, &attr, &info);
nfsrv_read(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
struct mbuf *nam = nfsd->nd_nam;
struct ucred *cred = &nfsd->nd_cr;
info.nmi_mrep = nfsd->nd_mrep;
info.nmi_md = nfsd->nd_md;
info.nmi_dpos = nfsd->nd_dpos;
info.nmi_v3 = (nfsd->nd_flag & ND_NFSV3);
if (nfsm_srvmtofh1(&info, nfsd, slp, mrq) != 0)
if (reqlen > (NFS_SRVMAXDATA(nfsd)) || reqlen <= 0) {
if (nfsm_reply(&info, nfsd, slp, mrq, error, 0) != 0)
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvfattr(nfsd, &va, fp);
if (nfsm_reply(&info, nfsd, slp, mrq, error, 0) != 0)
nfsm_srvpostop_attr(nfsd, getret, &va, &info);
nfsrv_write(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
struct mbuf *nam = nfsd->nd_nam;
struct ucred *cred = &nfsd->nd_cr;
info.nmi_mrep = nfsd->nd_mrep;
info.nmi_md = nfsd->nd_md;
info.nmi_dpos = nfsd->nd_dpos;
info.nmi_v3 = (nfsd->nd_flag & ND_NFSV3);
if (nfsm_srvmtofh1(&info, nfsd, slp, mrq) != 0)
nfsm_reply(struct nfsm_info *infop, struct nfsrv_descript *nfsd,
nfsd->nd_repstat = error;
(void)nfs_rephead(statuslen, nfsd, slp, error,
if (nfsm_reply(&info, nfsd, slp, mrq, error,
nfsm_srvwcc(nfsd, forat_ret, &forat, aftat_ret, &va, &info);
nfsm_srvfattr(nfsd, &va, fp);
if (nfsm_reply(&info, nfsd, slp, mrq, error, 0) != 0)
nfsm_srvwcc(nfsd, forat_ret, &forat, aftat_ret, &va, &info);
nfs_getreq(struct nfsrv_descript *nd, struct nfsd *nfsd, int has_header)
nfsrv_dorec(struct nfssvc_sock *slp, struct nfsd *nfsd,
error = nfs_getreq(nd, nfsd, 1);
nfsd->nfsd_nd = nd;
struct nfsd *nfsd;
TAILQ_FOREACH(nfsd, &nfsd_head, nfsd_chain) {
if (nfsd->nfsd_flag & NFSD_WAITING) {
nfsd->nfsd_flag &= ~NFSD_WAITING;
if (nfsd->nfsd_slp)
nfsd->nfsd_slp = slp;
wakeup_one(nfsd);
nfsm_srvwcc(struct nfsrv_descript *nfsd, int before_ret,
nfsm_srvpostop_attr(nfsd, after_ret, after_vap, info);
nfsm_srvpostop_attr(struct nfsrv_descript *nfsd, int after_ret,
nfsm_srvfattr(nfsd, after_vap, fp);
nfsm_srvfattr(struct nfsrv_descript *nfsd, struct vattr *vap,
if (nfsd->nd_flag & ND_NFSV3) {
int nfssvc_nfsd(struct nfsd *);
struct nfsd *nfsd;
nfsd = malloc(sizeof(*nfsd), M_NFSD, M_WAITOK|M_ZERO);
nfsd->nfsd_procp = p;
nfsd->nfsd_slp = NULL;
error = nfssvc_nfsd(nfsd);
nfssvc_nfsd(struct nfsd *nfsd)
TAILQ_INSERT_TAIL(&nfsd_head, nfsd, nfsd_chain);
if (!ISSET(nfsd->nfsd_flag, NFSD_REQINPROG)) {
error = nfsrv_getslp(nfsd);
slp = nfsd->nfsd_slp;
error = nfsrv_dorec(slp, nfsd, &nd);
SET(nfsd->nfsd_flag, NFSD_REQINPROG);
slp = nfsd->nfsd_slp;
nfsd->nfsd_slp = NULL;
CLR(nfsd->nfsd_flag, NFSD_REQINPROG);
error = (*(nfsrv3_procs[nd->nd_procnum]))(nd, slp, nfsd->nfsd_procp, &mreq);
if (nfsrv_dorec(slp, nfsd, &nd)) {
nfsd->nfsd_flag &= ~NFSD_REQINPROG;
nfsd->nfsd_slp = NULL;
TAILQ_REMOVE(&nfsd_head, nfsd, nfsd_chain);
free(nfsd, M_NFSD, sizeof(*nfsd));
nfsrv_getslp(struct nfsd *nfsd)
while (nfsd->nfsd_slp == NULL &&
nfsd->nfsd_flag |= NFSD_WAITING;
error = tsleep_nsec(nfsd, PSOCK | PCATCH, "nfsd", INFSLP);
if (nfsd->nfsd_slp == NULL &&
nfsd->nfsd_slp = slp;
int nfsrv_getslp(struct nfsd *nfsd);
if (nfsd->nfsd_slp == NULL)
int nfsrv_dorec(struct nfssvc_sock *, struct nfsd *,