Index: nfsserver/nfs_srvsock.c =================================================================== --- nfsserver/nfs_srvsock.c (revision 182855) +++ nfsserver/nfs_srvsock.c (working copy) @@ -104,7 +104,6 @@ int32_t (*nfsrv3_procs[NFS_NPROCS])(struct nfsrv_descript *nd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mreqp) = { nfsrv_null, nfsrv_getattr, Index: nfsserver/nfs_syscalls.c =================================================================== --- nfsserver/nfs_syscalls.c (revision 182855) +++ nfsserver/nfs_syscalls.c (working copy) @@ -95,10 +95,9 @@ SYSCTL_INT(_vfs_nfsrv, OID_AUTO, gatherdelay_v3, CTLFLAG_RW, &nfsrvw_procrastinate_v3, 0, ""); -static int nfssvc_addsock(struct file *, struct sockaddr *, - struct thread *); +static int nfssvc_addsock(struct file *, struct sockaddr *); static void nfsrv_zapsock(struct nfssvc_sock *slp); -static int nfssvc_nfsd(struct thread *); +static int nfssvc_nfsd(void); extern u_long sb_max_adj; @@ -166,10 +165,10 @@ return (error); } } - error = nfssvc_addsock(fp, nam, td); + error = nfssvc_addsock(fp, nam); fdrop(fp, td); } else if (uap->flag & NFSSVC_NFSD) { - error = nfssvc_nfsd(td); + error = nfssvc_nfsd(); } else { error = ENXIO; } @@ -182,7 +181,7 @@ * Adds a socket to the list for servicing by nfsds. */ static int -nfssvc_addsock(struct file *fp, struct sockaddr *mynam, struct thread *td) +nfssvc_addsock(struct file *fp, struct sockaddr *mynam) { int siz; struct nfssvc_sock *slp; @@ -283,7 +282,7 @@ * until it is killed by a signal. */ static int -nfssvc_nfsd(struct thread *td) +nfssvc_nfsd() { int siz; struct nfssvc_sock *slp; @@ -303,7 +302,6 @@ s = splnet(); NFSD_LOCK(); - nfsd->nfsd_td = td; TAILQ_INSERT_TAIL(&nfsd_head, nfsd, nfsd_chain); nfsrv_numnfsd++; @@ -450,11 +448,10 @@ if (writes_todo || (!(nd->nd_flag & ND_NFSV3) && nd->nd_procnum == NFSPROC_WRITE && procrastinate > 0 && !notstarted)) - error = nfsrv_writegather(&nd, slp, - nfsd->nfsd_td, &mreq); + error = nfsrv_writegather(&nd, slp, &mreq); else error = (*(nfsrv3_procs[nd->nd_procnum]))(nd, - slp, nfsd->nfsd_td, &mreq); + slp, &mreq); NFSD_LOCK(); if (mreq == NULL) break; Index: nfsserver/nfs_serv.c =================================================================== --- nfsserver/nfs_serv.c (revision 182855) +++ nfsserver/nfs_serv.c (working copy) @@ -138,8 +138,7 @@ SYSCTL_STRUCT(_vfs_nfsrv, NFS_NFSRVSTATS, nfsrvstats, CTLFLAG_RW, &nfsrvstats, nfsrvstats, "S,nfsrvstats"); -static int nfsrv_access(struct vnode *, int, struct ucred *, int, - struct thread *, int); +static int nfsrv_access(struct vnode *, int, struct ucred *, int, int); static void nfsrvw_coalesce(struct nfsrv_descript *, struct nfsrv_descript *); @@ -189,7 +188,7 @@ */ int nfsrv3_access(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq) + struct mbuf **mrq) { struct mbuf *mrep = nfsd->nd_mrep, *md = nfsd->nd_md; struct sockaddr *nam = nfsd->nd_nam; @@ -224,7 +223,7 @@ } nfsmode = fxdr_unsigned(u_int32_t, *tl); if ((nfsmode & NFSV3ACCESS_READ) && - nfsrv_access(vp, VREAD, cred, rdonly, td, 0)) + nfsrv_access(vp, VREAD, cred, rdonly, 0)) nfsmode &= ~NFSV3ACCESS_READ; if (vp->v_type == VDIR) testmode = (NFSV3ACCESS_MODIFY | NFSV3ACCESS_EXTEND | @@ -232,14 +231,14 @@ else testmode = (NFSV3ACCESS_MODIFY | NFSV3ACCESS_EXTEND); if ((nfsmode & testmode) && - nfsrv_access(vp, VWRITE, cred, rdonly, td, 0)) + nfsrv_access(vp, VWRITE, cred, rdonly, 0)) nfsmode &= ~testmode; if (vp->v_type == VDIR) testmode = NFSV3ACCESS_LOOKUP; else testmode = NFSV3ACCESS_EXECUTE; if ((nfsmode & testmode) && - nfsrv_access(vp, VEXEC, cred, rdonly, td, 0)) + nfsrv_access(vp, VEXEC, cred, rdonly, 0)) nfsmode &= ~testmode; getret = VOP_GETATTR(vp, vap, cred); vput(vp); @@ -260,7 +259,7 @@ */ int nfsrv_getattr(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq) + struct mbuf **mrq) { struct mbuf *mrep = nfsd->nd_mrep, *md = nfsd->nd_md; struct sockaddr *nam = nfsd->nd_nam; @@ -313,7 +312,7 @@ */ int nfsrv_setattr(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq) + struct mbuf **mrq) { struct mbuf *mrep = nfsd->nd_mrep, *md = nfsd->nd_md; struct sockaddr *nam = nfsd->nd_nam; @@ -435,7 +434,7 @@ error = EISDIR; goto out; } else if ((error = nfsrv_access(vp, VWRITE, cred, rdonly, - td, 0)) != 0) + 0)) != 0) goto out; } error = VOP_SETATTR(vp, vap, cred); @@ -471,7 +470,7 @@ */ int nfsrv_lookup(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq) + struct mbuf **mrq) { struct mbuf *mrep = nfsd->nd_mrep, *md = nfsd->nd_md; struct sockaddr *nam = nfsd->nd_nam; @@ -504,7 +503,7 @@ nd.ni_cnd.cn_nameiop = LOOKUP; nd.ni_cnd.cn_flags = LOCKLEAF | SAVESTART | MPSAFE; error = nfs_namei(&nd, fhp, len, slp, nam, &md, &dpos, - &dirp, v3, &dirattr, &dirattr_ret, td, pubflag); + &dirp, v3, &dirattr, &dirattr_ret, pubflag); vfslocked = NDHASGIANT(&nd); /* @@ -655,7 +654,7 @@ */ int nfsrv_readlink(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq) + struct mbuf **mrq) { struct mbuf *mrep = nfsd->nd_mrep, *md = nfsd->nd_md; struct sockaddr *nam = nfsd->nd_nam; @@ -762,7 +761,7 @@ */ int nfsrv_read(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq) + struct mbuf **mrq) { struct mbuf *mrep = nfsd->nd_mrep, *md = nfsd->nd_md; struct sockaddr *nam = nfsd->nd_nam; @@ -827,10 +826,8 @@ error = (vp->v_type == VDIR) ? EISDIR : EACCES; } if (!error) { - if ((error = nfsrv_access(vp, VREAD, cred, rdonly, - td, 1)) != 0) - error = nfsrv_access(vp, VEXEC, cred, - rdonly, td, 1); + if ((error = nfsrv_access(vp, VREAD, cred, rdonly, 1)) != 0) + error = nfsrv_access(vp, VEXEC, cred, rdonly, 1); } getret = VOP_GETATTR(vp, vap, cred); if (!error) @@ -1014,7 +1011,7 @@ */ int nfsrv_write(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq) + struct mbuf **mrq) { struct mbuf *mrep = nfsd->nd_mrep, *md = nfsd->nd_md; struct sockaddr *nam = nfsd->nd_nam; @@ -1132,7 +1129,7 @@ error = (vp->v_type == VDIR) ? EISDIR : EACCES; } if (!error) - error = nfsrv_access(vp, VWRITE, cred, rdonly, td, 1); + error = nfsrv_access(vp, VWRITE, cred, rdonly, 1); if (error) { vput(vp); vp = NULL; @@ -1258,7 +1255,7 @@ */ int nfsrv_writegather(struct nfsrv_descript **ndp, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq) + struct mbuf **mrq) { struct iovec *ivp; struct mbuf *mp; @@ -1447,8 +1444,7 @@ vp = NULL; } if (!error) - error = nfsrv_access(vp, VWRITE, cred, rdonly, - td, 1); + error = nfsrv_access(vp, VWRITE, cred, rdonly, 1); if (nfsd->nd_stable == NFSV3WRITE_UNSTABLE) ioflags = IO_NODELOCKED; else if (nfsd->nd_stable == NFSV3WRITE_DATASYNC) @@ -1641,7 +1637,7 @@ */ int nfsrv_create(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq) + struct mbuf **mrq) { struct mbuf *mrep = nfsd->nd_mrep, *md = nfsd->nd_md; struct sockaddr *nam = nfsd->nd_nam; @@ -1699,7 +1695,7 @@ * prior to calling nfsm_reply ( which might goto nfsmout ). */ error = nfs_namei(&nd, fhp, len, slp, nam, &md, &dpos, - &dirp, v3, &dirfor, &dirfor_ret, td, FALSE); + &dirp, v3, &dirfor, &dirfor_ret, FALSE); vfslocked = nfsrv_lockedpair_nd(vfslocked, &nd); if (dirp && !v3) { vrele(dirp); @@ -1831,7 +1827,7 @@ */ nd.ni_cnd.cn_nameiop = LOOKUP; nd.ni_cnd.cn_flags &= ~(LOCKPARENT); - nd.ni_cnd.cn_thread = td; + nd.ni_cnd.cn_thread = curthread; nd.ni_cnd.cn_cred = cred; tvfslocked = VFS_LOCK_GIANT(nd.ni_startdir->v_mount); if (tvfslocked) @@ -1853,7 +1849,7 @@ } else { if (vap->va_size != -1) { error = nfsrv_access(nd.ni_vp, VWRITE, - cred, (nd.ni_cnd.cn_flags & RDONLY), td, 0); + cred, (nd.ni_cnd.cn_flags & RDONLY), 0); if (!error) { tempsize = vap->va_size; VATTR_NULL(vap); @@ -1936,7 +1932,7 @@ */ int nfsrv_mknod(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq) + struct mbuf **mrq) { struct mbuf *mrep = nfsd->nd_mrep, *md = nfsd->nd_md; struct sockaddr *nam = nfsd->nd_nam; @@ -1944,6 +1940,7 @@ struct ucred *cred = nfsd->nd_cr; struct vattr va, dirfor, diraft; struct vattr *vap = &va; + struct thread *td = curthread; u_int32_t *tl; struct nameidata nd; caddr_t bpos; @@ -1987,7 +1984,7 @@ */ error = nfs_namei(&nd, fhp, len, slp, nam, &md, &dpos, - &dirp, v3, &dirfor, &dirfor_ret, td, FALSE); + &dirp, v3, &dirfor, &dirfor_ret, FALSE); vfslocked = nfsrv_lockedpair_nd(vfslocked, &nd); if (error) { nfsm_reply(NFSX_WCCDATA(1)); @@ -2131,7 +2128,7 @@ */ int nfsrv_remove(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq) + struct mbuf **mrq) { struct mbuf *mrep = nfsd->nd_mrep, *md = nfsd->nd_md; struct sockaddr *nam = nfsd->nd_nam; @@ -2168,7 +2165,7 @@ nd.ni_cnd.cn_nameiop = DELETE; nd.ni_cnd.cn_flags = LOCKPARENT | LOCKLEAF | MPSAFE; error = nfs_namei(&nd, fhp, len, slp, nam, &md, &dpos, - &dirp, v3, &dirfor, &dirfor_ret, td, FALSE); + &dirp, v3, &dirfor, &dirfor_ret, FALSE); vfslocked = nfsrv_lockedpair_nd(vfslocked, &nd); if (dirp && !v3) { vrele(dirp); @@ -2241,7 +2238,7 @@ */ int nfsrv_rename(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq) + struct mbuf **mrq) { struct mbuf *mrep = nfsd->nd_mrep, *md = nfsd->nd_md; struct sockaddr *nam = nfsd->nd_nam; @@ -2295,7 +2292,7 @@ fromnd.ni_cnd.cn_nameiop = DELETE; fromnd.ni_cnd.cn_flags = WANTPARENT | SAVESTART | MPSAFE; error = nfs_namei(&fromnd, ffhp, len, slp, nam, &md, - &dpos, &fdirp, v3, &fdirfor, &fdirfor_ret, td, FALSE); + &dpos, &fdirp, v3, &fdirfor, &fdirfor_ret, FALSE); vfslocked = nfsrv_lockedpair_nd(vfslocked, &fromnd); if (fdirp && !v3) { vrele(fdirp); @@ -2318,7 +2315,7 @@ tond.ni_cnd.cn_nameiop = RENAME; tond.ni_cnd.cn_flags = LOCKPARENT | LOCKLEAF | NOCACHE | SAVESTART | MPSAFE; error = nfs_namei(&tond, tfhp, len2, slp, nam, &md, - &dpos, &tdirp, v3, &tdirfor, &tdirfor_ret, td, FALSE); + &dpos, &tdirp, v3, &tdirfor, &tdirfor_ret, FALSE); vfslocked = nfsrv_lockedpair_nd(vfslocked, &tond); if (tdirp && !v3) { vrele(tdirp); @@ -2474,7 +2471,7 @@ */ int nfsrv_link(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq) + struct mbuf **mrq) { struct mbuf *mrep = nfsd->nd_mrep, *md = nfsd->nd_md; struct sockaddr *nam = nfsd->nd_nam; @@ -2534,7 +2531,7 @@ nd.ni_cnd.cn_nameiop = CREATE; nd.ni_cnd.cn_flags = LOCKPARENT | MPSAFE | MPSAFE; error = nfs_namei(&nd, dfhp, len, slp, nam, &md, &dpos, - &dirp, v3, &dirfor, &dirfor_ret, td, FALSE); + &dirp, v3, &dirfor, &dirfor_ret, FALSE); vfslocked = nfsrv_lockedpair_nd(vfslocked, &nd); if (dirp && !v3) { vrele(dirp); @@ -2622,7 +2619,7 @@ */ int nfsrv_symlink(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq) + struct mbuf **mrq) { struct mbuf *mrep = nfsd->nd_mrep, *md = nfsd->nd_md; struct sockaddr *nam = nfsd->nd_nam; @@ -2663,7 +2660,7 @@ nd.ni_cnd.cn_nameiop = CREATE; nd.ni_cnd.cn_flags = LOCKPARENT | SAVESTART | MPSAFE; error = nfs_namei(&nd, fhp, len, slp, nam, &md, &dpos, - &dirp, v3, &dirfor, &dirfor_ret, td, FALSE); + &dirp, v3, &dirfor, &dirfor_ret, FALSE); vfslocked = nfsrv_lockedpair_nd(vfslocked, &nd); if (error == 0) { VATTR_NULL(vap); @@ -2728,7 +2725,7 @@ nd.ni_cnd.cn_nameiop = LOOKUP; nd.ni_cnd.cn_flags &= ~(LOCKPARENT | FOLLOW); nd.ni_cnd.cn_flags |= (NOFOLLOW | LOCKLEAF); - nd.ni_cnd.cn_thread = td; + nd.ni_cnd.cn_thread = curthread; nd.ni_cnd.cn_cred = cred; tvfslocked = VFS_LOCK_GIANT(nd.ni_startdir->v_mount); if (tvfslocked) @@ -2805,7 +2802,7 @@ */ int nfsrv_mkdir(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq) + struct mbuf **mrq) { struct mbuf *mrep = nfsd->nd_mrep, *md = nfsd->nd_md; struct sockaddr *nam = nfsd->nd_nam; @@ -2846,7 +2843,7 @@ nd.ni_cnd.cn_flags = LOCKPARENT | MPSAFE; error = nfs_namei(&nd, fhp, len, slp, nam, &md, &dpos, - &dirp, v3, &dirfor, &dirfor_ret, td, FALSE); + &dirp, v3, &dirfor, &dirfor_ret, FALSE); vfslocked = nfsrv_lockedpair_nd(vfslocked, &nd); if (dirp && !v3) { vrele(dirp); @@ -2968,7 +2965,7 @@ */ int nfsrv_rmdir(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq) + struct mbuf **mrq) { struct mbuf *mrep = nfsd->nd_mrep, *md = nfsd->nd_md; struct sockaddr *nam = nfsd->nd_nam; @@ -3004,7 +3001,7 @@ nd.ni_cnd.cn_nameiop = DELETE; nd.ni_cnd.cn_flags = LOCKPARENT | LOCKLEAF | MPSAFE; error = nfs_namei(&nd, fhp, len, slp, nam, &md, &dpos, - &dirp, v3, &dirfor, &dirfor_ret, td, FALSE); + &dirp, v3, &dirfor, &dirfor_ret, FALSE); vfslocked = nfsrv_lockedpair_nd(vfslocked, &nd); if (dirp && !v3) { vrele(dirp); @@ -3127,7 +3124,7 @@ int nfsrv_readdir(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq) + struct mbuf **mrq) { struct mbuf *mrep = nfsd->nd_mrep, *md = nfsd->nd_md; struct sockaddr *nam = nfsd->nd_nam; @@ -3207,7 +3204,7 @@ #endif } if (!error) - error = nfsrv_access(vp, VEXEC, cred, rdonly, td, 0); + error = nfsrv_access(vp, VEXEC, cred, rdonly, 0); if (error) { vput(vp); vp = NULL; @@ -3422,7 +3419,7 @@ int nfsrv_readdirplus(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq) + struct mbuf **mrq) { struct mbuf *mrep = nfsd->nd_mrep, *md = nfsd->nd_md; struct sockaddr *nam = nfsd->nd_nam; @@ -3494,7 +3491,7 @@ error = NFSERR_BAD_COOKIE; #endif if (!error) - error = nfsrv_access(vp, VEXEC, cred, rdonly, td, 0); + error = nfsrv_access(vp, VEXEC, cred, rdonly, 0); if (error) { vput(vp); vp = NULL; @@ -3771,7 +3768,7 @@ */ int nfsrv_commit(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq) + struct mbuf **mrq) { struct mbuf *mrep = nfsd->nd_mrep, *md = nfsd->nd_md; struct sockaddr *nam = nfsd->nd_nam; @@ -3834,7 +3831,7 @@ vm_object_page_clean(vp->v_object, 0, 0, OBJPC_SYNC); VM_OBJECT_UNLOCK(vp->v_object); } - error = VOP_FSYNC(vp, MNT_WAIT, td); + error = VOP_FSYNC(vp, MNT_WAIT, curthread); } else { /* * Locate and synchronously write any buffers that fall @@ -3934,7 +3931,7 @@ */ int nfsrv_statfs(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq) + struct mbuf **mrq) { struct mbuf *mrep = nfsd->nd_mrep, *md = nfsd->nd_md; struct sockaddr *nam = nfsd->nd_nam; @@ -3968,7 +3965,7 @@ goto nfsmout; } sf = &statfs; - error = VFS_STATFS(vp->v_mount, sf, td); + error = VFS_STATFS(vp->v_mount, sf, curthread); getret = VOP_GETATTR(vp, &at, cred); vput(vp); vp = NULL; @@ -4028,7 +4025,7 @@ */ int nfsrv_fsinfo(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq) + struct mbuf **mrq) { struct mbuf *mrep = nfsd->nd_mrep, *md = nfsd->nd_md; struct sockaddr *nam = nfsd->nd_nam; @@ -4063,7 +4060,7 @@ } /* XXX Try to make a guess on the max file size. */ - VFS_STATFS(vp->v_mount, &sb, td); + VFS_STATFS(vp->v_mount, &sb, curthread); maxfsize = (u_quad_t)0x80000000 * sb.f_bsize - 1; getret = VOP_GETATTR(vp, &at, cred); @@ -4107,7 +4104,7 @@ */ int nfsrv_pathconf(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq) + struct mbuf **mrq) { struct mbuf *mrep = nfsd->nd_mrep, *md = nfsd->nd_md; struct sockaddr *nam = nfsd->nd_nam; @@ -4182,7 +4179,7 @@ /* ARGSUSED */ int nfsrv_null(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq) + struct mbuf **mrq) { struct mbuf *mrep = nfsd->nd_mrep; caddr_t bpos; @@ -4201,7 +4198,7 @@ /* ARGSUSED */ int nfsrv_noop(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq) + struct mbuf **mrq) { struct mbuf *mrep = nfsd->nd_mrep; caddr_t bpos; @@ -4235,8 +4232,8 @@ * will return EPERM instead of EACCESS. EPERM is always an error. */ static int -nfsrv_access(struct vnode *vp, int flags, struct ucred *cred, - int rdonly, struct thread *td, int override) +nfsrv_access(struct vnode *vp, int flags, struct ucred *cred, int rdonly, + int override) { struct vattr vattr; int error; @@ -4273,7 +4270,7 @@ error = VOP_GETATTR(vp, &vattr, cred); if (error) return (error); - error = VOP_ACCESS(vp, flags, cred, td); + error = VOP_ACCESS(vp, flags, cred, curthread); /* * Allow certain operations for the owner (reads and writes * on files that are already open). Index: nfsserver/nfs.h =================================================================== --- nfsserver/nfs.h (revision 182855) +++ nfsserver/nfs.h (working copy) @@ -155,8 +155,7 @@ extern const int nfsrvv2_procid[NFS_NPROCS]; extern const int nfsrv_nfsv3_procid[NFS_NPROCS]; extern int32_t (*nfsrv3_procs[NFS_NPROCS])(struct nfsrv_descript *nd, - struct nfssvc_sock *slp, struct thread *td, - struct mbuf **mreqp); + struct nfssvc_sock *slp, struct mbuf **mreqp); /* * A list of nfssvc_sock structures is maintained with all the sockets @@ -225,7 +224,6 @@ u_char nfsd_authstr[RPCAUTH_MAXSIZ]; /* Authenticator data */ int nfsd_verflen; /* and the Verifier */ u_char nfsd_verfstr[RPCVERF_MAXSIZ]; - struct thread *nfsd_td; /* daemon thread ptr */ struct nfsrv_descript *nfsd_nd; /* Associated nfsrv_descript */ }; @@ -332,8 +330,7 @@ int netaddr_match(int, union nethostaddr *, struct sockaddr *); int nfs_namei(struct nameidata *, fhandle_t *, int, struct nfssvc_sock *, struct sockaddr *, struct mbuf **, - caddr_t *, struct vnode **, int, struct vattr *, int *, - struct thread *, int); + caddr_t *, struct vnode **, int, struct vattr *, int *, int); void nfsm_adj(struct mbuf *, int, int); int nfsm_mbuftouio(struct mbuf **, struct uio *, int, caddr_t *); void nfsrv_initcache(void); @@ -349,59 +346,59 @@ void nfsrvw_sort(gid_t *, int); void nfsrv_wakenfsd(struct nfssvc_sock *slp); int nfsrv_writegather(struct nfsrv_descript **, struct nfssvc_sock *, - struct thread *, struct mbuf **); + struct mbuf **); int nfsrv3_access(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq); + struct mbuf **mrq); int nfsrv_commit(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq); + struct mbuf **mrq); int nfsrv_create(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq); + struct mbuf **mrq); int nfsrv_fhtovp(fhandle_t *, int, struct vnode **, int *, struct ucred *, struct nfssvc_sock *, struct sockaddr *, int *, int); int nfsrv_setpublicfs(struct mount *, struct netexport *, struct export_args *); int nfs_ispublicfh(fhandle_t *); int nfsrv_fsinfo(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq); + struct mbuf **mrq); int nfsrv_getattr(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq); + struct mbuf **mrq); int nfsrv_link(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq); + struct mbuf **mrq); int nfsrv_lookup(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq); + struct mbuf **mrq); int nfsrv_mkdir(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq); + struct mbuf **mrq); int nfsrv_mknod(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq); + struct mbuf **mrq); int nfsrv_noop(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq); + struct mbuf **mrq); int nfsrv_null(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq); + struct mbuf **mrq); int nfsrv_pathconf(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq); + struct mbuf **mrq); int nfsrv_read(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq); + struct mbuf **mrq); int nfsrv_readdir(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq); + struct mbuf **mrq); int nfsrv_readdirplus(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq); + struct mbuf **mrq); int nfsrv_readlink(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq); + struct mbuf **mrq); int nfsrv_remove(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq); + struct mbuf **mrq); int nfsrv_rename(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq); + struct mbuf **mrq); int nfsrv_rmdir(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq); + struct mbuf **mrq); int nfsrv_setattr(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq); + struct mbuf **mrq); int nfsrv_statfs(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq); + struct mbuf **mrq); int nfsrv_symlink(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq); + struct mbuf **mrq); int nfsrv_write(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, - struct thread *td, struct mbuf **mrq); + struct mbuf **mrq); void nfsrv_rcv(struct socket *so, void *arg, int waitflag); void nfsrv_slpderef(struct nfssvc_sock *slp); #endif /* _KERNEL */ Index: nfsserver/nfs_srvsubs.c =================================================================== --- nfsserver/nfs_srvsubs.c (revision 182855) +++ nfsserver/nfs_srvsubs.c (working copy) @@ -607,7 +607,7 @@ nfs_namei(struct nameidata *ndp, fhandle_t *fhp, int len, struct nfssvc_sock *slp, struct sockaddr *nam, struct mbuf **mdp, caddr_t *dposp, struct vnode **retdirp, int v3, struct vattr *retdirattrp, - int *retdirattr_retp, struct thread *td, int pubflag) + int *retdirattr_retp, int pubflag) { int i, rem; struct mbuf *md; @@ -765,7 +765,7 @@ * because lookup() will dereference ni_startdir. */ - cnp->cn_thread = td; + cnp->cn_thread = curthread; VREF(dp); ndp->ni_startdir = dp;