nfsm_reqhead(vp, NFSPROC_GETATTR, NFSX_FH); nfsm_fhtom(vp);
nfsm_reqhead(vp, NFSPROC_GETATTR, NFSX_FH(v3)); nfsm_fhtom(vp, v3);
nfs_getattr(v)	void *v;{	struct vop_getattr_args /* {		struct vnode *a_vp;		struct vattr *a_vap;		struct ucred *a_cred;		struct proc *a_p;	} */ *ap = v;	register struct vnode *vp = ap->a_vp;	register struct nfsnode *np = VTONFS(vp);	register caddr_t cp;	caddr_t bpos, dpos;	int error = 0;	struct mbuf *mreq, *mrep, *md, *mb, *mb2;		/*	 * Update local times for special files.	 */	if (np->n_flag & (NACC | NUPD))		np->n_flag |= NCHG;	/*	 * First look in the cache.	 */	if (nfs_getattrcache(vp, ap->a_vap) == 0)		return (0);	nfsstats.rpccnt[NFSPROC_GETATTR]++;	nfsm_reqhead(vp, NFSPROC_GETATTR, NFSX_FH);	nfsm_fhtom(vp);	nfsm_request(vp, NFSPROC_GETATTR, ap->a_p, ap->a_cred);	nfsm_loadattr(vp, ap->a_vap);	nfsm_reqdone;	return (error);}